Fix symmetric equality and ordering impls

This commit is contained in:
Ian Manske 2024-06-13 20:29:29 -07:00
parent 71faefd21e
commit dda6a080be

View File

@ -1880,16 +1880,16 @@ impl TryFrom<String> for AbsolutePathBuf {
// === Between crate types === // === Between crate types ===
impl<From: PathCast<To>, To: PathForm> PartialEq<Path<To>> for Path<From> { impl<Form: PathForm> PartialEq for Path<Form> {
fn eq(&self, other: &Path<To>) -> bool { fn eq(&self, other: &Self) -> bool {
self.inner == other.inner self.inner == other.inner
} }
} }
impl<Form: PathForm> Eq for Path<Form> {} impl<Form: PathForm> Eq for Path<Form> {}
impl<From: PathCast<To>, To: PathForm> PartialOrd<Path<To>> for Path<From> { impl<Form: PathForm> PartialOrd for Path<Form> {
fn partial_cmp(&self, other: &Path<To>) -> Option<Ordering> { fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
Some(self.inner.cmp(&other.inner)) Some(self.inner.cmp(&other.inner))
} }
} }
@ -1906,16 +1906,16 @@ impl<Form: PathForm> Hash for Path<Form> {
} }
} }
impl<From: PathCast<To>, To: PathForm> PartialEq<PathBuf<To>> for PathBuf<From> { impl<Form: PathForm> PartialEq for PathBuf<Form> {
fn eq(&self, other: &PathBuf<To>) -> bool { fn eq(&self, other: &Self) -> bool {
self.inner == other.inner self.inner == other.inner
} }
} }
impl<Form: PathForm> Eq for PathBuf<Form> {} impl<Form: PathForm> Eq for PathBuf<Form> {}
impl<From: PathCast<To>, To: PathForm> PartialOrd<PathBuf<To>> for PathBuf<From> { impl<Form: PathForm> PartialOrd for PathBuf<Form> {
fn partial_cmp(&self, other: &PathBuf<To>) -> Option<Ordering> { fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
Some(self.inner.cmp(&other.inner)) 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, RelativePath);
impl_cmp_cast!(<> PathBuf, AbsolutePath); impl_cmp_cast!(<> PathBuf, AbsolutePath);
impl_cmp_cast!(<> PathBuf, CanonicalPath); impl_cmp_cast!(<> PathBuf, CanonicalPath);