@@ -999,7 +999,7 @@ pub trait Ord: Eq + PartialOrd<Self> {
999999    where 
10001000        Self :  Sized , 
10011001    { 
1002-         max_by ( self ,   other,   Ord :: cmp ) 
1002+         if  other <  self   {   self   }   else   {   other  } 
10031003    } 
10041004
10051005    /// Compares and returns the minimum of two values. 
@@ -1038,7 +1038,7 @@ pub trait Ord: Eq + PartialOrd<Self> {
10381038    where 
10391039        Self :  Sized , 
10401040    { 
1041-         min_by ( self ,   other,   Ord :: cmp ) 
1041+         if  other <  self   {   other  }   else   {   self   } 
10421042    } 
10431043
10441044    /// Restrict a value to a certain interval. 
@@ -1500,10 +1500,7 @@ pub fn min<T: Ord>(v1: T, v2: T) -> T {
15001500#[ must_use]  
15011501#[ stable( feature = "cmp_min_max_by" ,  since = "1.53.0" ) ]  
15021502pub  fn  min_by < T ,  F :  FnOnce ( & T ,  & T )  -> Ordering > ( v1 :  T ,  v2 :  T ,  compare :  F )  -> T  { 
1503-     match  compare ( & v1,  & v2)  { 
1504-         Ordering :: Less  | Ordering :: Equal  => v1, 
1505-         Ordering :: Greater  => v2, 
1506-     } 
1503+     if  compare ( & v2,  & v1) . is_lt ( )  {  v2 }  else  {  v1 } 
15071504} 
15081505
15091506/// Returns the element that gives the minimum value from the specified function. 
@@ -1528,7 +1525,7 @@ pub fn min_by<T, F: FnOnce(&T, &T) -> Ordering>(v1: T, v2: T, compare: F) -> T {
15281525#[ must_use]  
15291526#[ stable( feature = "cmp_min_max_by" ,  since = "1.53.0" ) ]  
15301527pub  fn  min_by_key < T ,  F :  FnMut ( & T )  -> K ,  K :  Ord > ( v1 :  T ,  v2 :  T ,  mut  f :  F )  -> T  { 
1531-     min_by ( v1 ,  v2 ,  |v1 ,  v2|  f ( v1) . cmp ( & f ( v2 ) ) ) 
1528+     if   f ( & v2 )  <  f ( & v1)   {  v2  }   else   {  v1  } 
15321529} 
15331530
15341531/// Compares and returns the maximum of two values. 
@@ -1595,10 +1592,7 @@ pub fn max<T: Ord>(v1: T, v2: T) -> T {
15951592#[ must_use]  
15961593#[ stable( feature = "cmp_min_max_by" ,  since = "1.53.0" ) ]  
15971594pub  fn  max_by < T ,  F :  FnOnce ( & T ,  & T )  -> Ordering > ( v1 :  T ,  v2 :  T ,  compare :  F )  -> T  { 
1598-     match  compare ( & v1,  & v2)  { 
1599-         Ordering :: Less  | Ordering :: Equal  => v2, 
1600-         Ordering :: Greater  => v1, 
1601-     } 
1595+     if  compare ( & v2,  & v1) . is_lt ( )  {  v1 }  else  {  v2 } 
16021596} 
16031597
16041598/// Returns the element that gives the maximum value from the specified function. 
@@ -1623,7 +1617,7 @@ pub fn max_by<T, F: FnOnce(&T, &T) -> Ordering>(v1: T, v2: T, compare: F) -> T {
16231617#[ must_use]  
16241618#[ stable( feature = "cmp_min_max_by" ,  since = "1.53.0" ) ]  
16251619pub  fn  max_by_key < T ,  F :  FnMut ( & T )  -> K ,  K :  Ord > ( v1 :  T ,  v2 :  T ,  mut  f :  F )  -> T  { 
1626-     max_by ( v1 ,  v2 ,  |v1 ,  v2|  f ( v1) . cmp ( & f ( v2 ) ) ) 
1620+     if   f ( & v2 )  <  f ( & v1)   {  v1  }   else   {  v2  } 
16271621} 
16281622
16291623/// Compares and sorts two values, returning minimum and maximum. 
@@ -1670,7 +1664,7 @@ pub fn minmax<T>(v1: T, v2: T) -> [T; 2]
16701664where 
16711665    T :  Ord , 
16721666{ 
1673-     if  v1 <= v2  {  [ v1 ,  v2 ]  }  else  {  [ v2 ,  v1 ]  } 
1667+     if  v2 < v1  {  [ v2 ,  v1 ]  }  else  {  [ v1 ,  v2 ]  } 
16741668} 
16751669
16761670/// Returns minimum and maximum values with respect to the specified comparison function. 
@@ -1701,7 +1695,7 @@ pub fn minmax_by<T, F>(v1: T, v2: T, compare: F) -> [T; 2]
17011695where 
17021696    F :  FnOnce ( & T ,  & T )  -> Ordering , 
17031697{ 
1704-     if  compare ( & v1 ,  & v2 ) . is_le ( )  {  [ v1 ,  v2 ]  }  else  {  [ v2 ,  v1 ]  } 
1698+     if  compare ( & v2 ,  & v1 ) . is_lt ( )  {  [ v2 ,  v1 ]  }  else  {  [ v1 ,  v2 ]  } 
17051699} 
17061700
17071701/// Returns minimum and maximum values with respect to the specified key function. 
@@ -1730,7 +1724,7 @@ where
17301724    F :  FnMut ( & T )  -> K , 
17311725    K :  Ord , 
17321726{ 
1733-     minmax_by ( v1 ,   v2,  |v1 ,  v2|  f ( v1 ) . cmp ( & f ( v2 ) ) ) 
1727+     if   f ( & v2 )  <  f ( & v1 )   {   [ v2,  v1 ]   }   else   {   [ v1 ,  v2 ]   } 
17341728} 
17351729
17361730// Implementation of PartialEq, Eq, PartialOrd and Ord for primitive types 
0 commit comments