From dda6a080bef1ee7e44003fe73e23f6e9b8225d65 Mon Sep 17 00:00:00 2001 From: Ian Manske Date: Thu, 13 Jun 2024 20:29:29 -0700 Subject: [PATCH] Fix symmetric equality and ordering impls --- crates/nu-path/src/path.rs | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/crates/nu-path/src/path.rs b/crates/nu-path/src/path.rs index 6de1dd9587..7f64a2df26 100644 --- a/crates/nu-path/src/path.rs +++ b/crates/nu-path/src/path.rs @@ -1880,16 +1880,16 @@ impl TryFrom for AbsolutePathBuf { // === Between crate types === -impl, To: PathForm> PartialEq> for Path { - fn eq(&self, other: &Path) -> bool { +impl PartialEq for Path
{ + fn eq(&self, other: &Self) -> bool { self.inner == other.inner } } impl Eq for Path {} -impl, To: PathForm> PartialOrd> for Path { - fn partial_cmp(&self, other: &Path) -> Option { +impl PartialOrd for Path { + fn partial_cmp(&self, other: &Self) -> Option { Some(self.inner.cmp(&other.inner)) } } @@ -1906,16 +1906,16 @@ impl Hash for Path { } } -impl, To: PathForm> PartialEq> for PathBuf { - fn eq(&self, other: &PathBuf) -> bool { +impl PartialEq for PathBuf { + fn eq(&self, other: &Self) -> bool { self.inner == other.inner } } impl Eq for PathBuf {} -impl, To: PathForm> PartialOrd> for PathBuf { - fn partial_cmp(&self, other: &PathBuf) -> Option { +impl PartialOrd for PathBuf { + fn partial_cmp(&self, other: &Self) -> Option { Some(self.inner.cmp(&other.inner)) } } @@ -2002,6 +2002,24 @@ macro_rules! impl_cmp_cast { }; } +impl_cmp_cast!(<> Path, RelativePath); +impl_cmp_cast!(<> Path, AbsolutePath); +impl_cmp_cast!(<> Path, CanonicalPath); +impl_cmp_cast!(<> AbsolutePath, CanonicalPath); +impl_cmp_cast!(<> PathBuf, RelativePathBuf); +impl_cmp_cast!(<> PathBuf, AbsolutePathBuf); +impl_cmp_cast!(<> PathBuf, CanonicalPathBuf); +impl_cmp_cast!(<> AbsolutePathBuf, CanonicalPathBuf); + +impl_cmp_cast!(<'a> &'a Path, RelativePath); +impl_cmp_cast!(<'a> &'a Path, AbsolutePath); +impl_cmp_cast!(<'a> &'a Path, CanonicalPath); +impl_cmp_cast!(<'a> &'a AbsolutePath, CanonicalPath); +impl_cmp_cast!(<'a> Path, &'a RelativePath); +impl_cmp_cast!(<'a> Path, &'a AbsolutePath); +impl_cmp_cast!(<'a> Path, &'a CanonicalPath); +impl_cmp_cast!(<'a> AbsolutePath, &'a CanonicalPath); + impl_cmp_cast!(<> PathBuf, RelativePath); impl_cmp_cast!(<> PathBuf, AbsolutePath); impl_cmp_cast!(<> PathBuf, CanonicalPath);