Make iter::order functions into methods on Iterator
This does cause some breakage due to deficiencies in resolve - `path::Components` is both an `Iterator` and implements `Eq`, `Ord`, etc. If one calls e.g. `partial_cmp` on a `Components` and passes a `&Components` intending to target the `PartialOrd` impl, the compiler will select the `partial_cmp` from `Iterator` and then error out. I doubt anyone will run into breakage from `Components` specifically, but we should see if there are third party types that will run into issues. `iter::order::equals` wasn't moved to `Iterator` since it's exactly the same as `iter::order::eq` but with an `Eq` instead of `PartialEq` bound, which doensn't seem very useful. I also updated `le`, `gt`, etc to use `partial_cmp` which lets us drop the extra `PartialEq` bound. cc #27737
This commit is contained in:
@@ -882,7 +882,7 @@ impl<'a> DoubleEndedIterator for Components<'a> {
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
impl<'a> cmp::PartialEq for Components<'a> {
|
||||
fn eq(&self, other: &Components<'a>) -> bool {
|
||||
iter::order::eq(self.clone(), other.clone())
|
||||
Iterator::eq(self.clone(), other.clone())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -892,14 +892,14 @@ impl<'a> cmp::Eq for Components<'a> {}
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
impl<'a> cmp::PartialOrd for Components<'a> {
|
||||
fn partial_cmp(&self, other: &Components<'a>) -> Option<cmp::Ordering> {
|
||||
iter::order::partial_cmp(self.clone(), other.clone())
|
||||
Iterator::partial_cmp(self.clone(), other.clone())
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
impl<'a> cmp::Ord for Components<'a> {
|
||||
fn cmp(&self, other: &Components<'a>) -> cmp::Ordering {
|
||||
iter::order::cmp(self.clone(), other.clone())
|
||||
Iterator::cmp(self.clone(), other.clone())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1162,14 +1162,14 @@ impl cmp::Eq for PathBuf {}
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
impl cmp::PartialOrd for PathBuf {
|
||||
fn partial_cmp(&self, other: &PathBuf) -> Option<cmp::Ordering> {
|
||||
self.components().partial_cmp(&other.components())
|
||||
self.components().partial_cmp(other.components())
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
impl cmp::Ord for PathBuf {
|
||||
fn cmp(&self, other: &PathBuf) -> cmp::Ordering {
|
||||
self.components().cmp(&other.components())
|
||||
self.components().cmp(other.components())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1691,7 +1691,7 @@ impl<'a> fmt::Display for Display<'a> {
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
impl cmp::PartialEq for Path {
|
||||
fn eq(&self, other: &Path) -> bool {
|
||||
iter::order::eq(self.components(), other.components())
|
||||
self.components().eq(other.components())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1701,14 +1701,14 @@ impl cmp::Eq for Path {}
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
impl cmp::PartialOrd for Path {
|
||||
fn partial_cmp(&self, other: &Path) -> Option<cmp::Ordering> {
|
||||
self.components().partial_cmp(&other.components())
|
||||
self.components().partial_cmp(other.components())
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
impl cmp::Ord for Path {
|
||||
fn cmp(&self, other: &Path) -> cmp::Ordering {
|
||||
self.components().cmp(&other.components())
|
||||
self.components().cmp(other.components())
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user