diff --git a/src/libcore/iter/traits/iterator.rs b/src/libcore/iter/traits/iterator.rs
index 980de229fa66..ca7feed0712d 100644
--- a/src/libcore/iter/traits/iterator.rs
+++ b/src/libcore/iter/traits/iterator.rs
@@ -2008,8 +2008,7 @@ fn rposition
(&mut self, mut predicate: P) -> Option where
#[stable(feature = "rust1", since = "1.0.0")]
fn max(self) -> Option where Self: Sized, Self::Item: Ord
{
- // switch to y even if it is only equal, to preserve stability.
- select_fold1(self, |x, y| x <= y)
+ self.max_by(Ord::cmp)
}
/// Returns the minimum element of an iterator.
@@ -2034,8 +2033,7 @@ fn max(self) -> Option where Self: Sized, Self::Item: Ord
#[stable(feature = "rust1", since = "1.0.0")]
fn min(self) -> Option where Self: Sized, Self::Item: Ord
{
- // only switch to y if it is strictly smaller, to preserve stability.
- select_fold1(self, |x, y| x > y)
+ self.min_by(Ord::cmp)
}
/// Returns the element that gives the maximum value from the