@@ -397,6 +397,12 @@ pub enum Ordering {
397397} 
398398
399399impl  Ordering  { 
400+     #[ inline]  
401+     const  fn  as_raw ( self )  -> i8  { 
402+         // FIXME(const-hack): just use `PartialOrd` against `Equal` once that's const 
403+         crate :: intrinsics:: discriminant_value ( & self ) 
404+     } 
405+ 
400406    /// Returns `true` if the ordering is the `Equal` variant. 
401407/// 
402408/// # Examples 
@@ -413,7 +419,7 @@ impl Ordering {
413419    #[ rustc_const_stable( feature = "ordering_helpers" ,  since = "1.53.0" ) ]  
414420    #[ stable( feature = "ordering_helpers" ,  since = "1.53.0" ) ]  
415421    pub  const  fn  is_eq ( self )  -> bool  { 
416-         matches ! ( self ,   Equal ) 
422+         self . as_raw ( )  ==  0 
417423    } 
418424
419425    /// Returns `true` if the ordering is not the `Equal` variant. 
@@ -432,7 +438,7 @@ impl Ordering {
432438    #[ rustc_const_stable( feature = "ordering_helpers" ,  since = "1.53.0" ) ]  
433439    #[ stable( feature = "ordering_helpers" ,  since = "1.53.0" ) ]  
434440    pub  const  fn  is_ne ( self )  -> bool  { 
435-         ! matches ! ( self ,   Equal ) 
441+         self . as_raw ( )  !=  0 
436442    } 
437443
438444    /// Returns `true` if the ordering is the `Less` variant. 
@@ -451,7 +457,7 @@ impl Ordering {
451457    #[ rustc_const_stable( feature = "ordering_helpers" ,  since = "1.53.0" ) ]  
452458    #[ stable( feature = "ordering_helpers" ,  since = "1.53.0" ) ]  
453459    pub  const  fn  is_lt ( self )  -> bool  { 
454-         matches ! ( self ,   Less ) 
460+         self . as_raw ( )  <  0 
455461    } 
456462
457463    /// Returns `true` if the ordering is the `Greater` variant. 
@@ -470,7 +476,7 @@ impl Ordering {
470476    #[ rustc_const_stable( feature = "ordering_helpers" ,  since = "1.53.0" ) ]  
471477    #[ stable( feature = "ordering_helpers" ,  since = "1.53.0" ) ]  
472478    pub  const  fn  is_gt ( self )  -> bool  { 
473-         matches ! ( self ,   Greater ) 
479+         self . as_raw ( )  >  0 
474480    } 
475481
476482    /// Returns `true` if the ordering is either the `Less` or `Equal` variant. 
@@ -489,7 +495,7 @@ impl Ordering {
489495    #[ rustc_const_stable( feature = "ordering_helpers" ,  since = "1.53.0" ) ]  
490496    #[ stable( feature = "ordering_helpers" ,  since = "1.53.0" ) ]  
491497    pub  const  fn  is_le ( self )  -> bool  { 
492-         ! matches ! ( self ,   Greater ) 
498+         self . as_raw ( )  <=  0 
493499    } 
494500
495501    /// Returns `true` if the ordering is either the `Greater` or `Equal` variant. 
@@ -508,7 +514,7 @@ impl Ordering {
508514    #[ rustc_const_stable( feature = "ordering_helpers" ,  since = "1.53.0" ) ]  
509515    #[ stable( feature = "ordering_helpers" ,  since = "1.53.0" ) ]  
510516    pub  const  fn  is_ge ( self )  -> bool  { 
511-         ! matches ! ( self ,   Less ) 
517+         self . as_raw ( )  >=  0 
512518    } 
513519
514520    /// Reverses the `Ordering`. 
@@ -1369,7 +1375,9 @@ pub trait PartialOrd<Rhs: ?Sized = Self>: PartialEq<Rhs> {
13691375    #[ stable( feature = "rust1" ,  since = "1.0.0" ) ]  
13701376    #[ rustc_diagnostic_item = "cmp_partialord_lt" ]  
13711377    fn  lt ( & self ,  other :  & Rhs )  -> bool  { 
1372-         self . partial_cmp ( other) . is_some_and ( Ordering :: is_lt) 
1378+         // FIXME(#137901): weirdly, passing these as `Ordering::is_lt` doesn't 
1379+         // MIR-inline, thus the "unnecessary" closure form here. 
1380+         self . partial_cmp ( other) . is_some_and ( |c| c. is_lt ( ) ) 
13731381    } 
13741382
13751383    /// Tests less than or equal to (for `self` and `other`) and is used by the 
@@ -1387,7 +1395,7 @@ pub trait PartialOrd<Rhs: ?Sized = Self>: PartialEq<Rhs> {
13871395    #[ stable( feature = "rust1" ,  since = "1.0.0" ) ]  
13881396    #[ rustc_diagnostic_item = "cmp_partialord_le" ]  
13891397    fn  le ( & self ,  other :  & Rhs )  -> bool  { 
1390-         self . partial_cmp ( other) . is_some_and ( Ordering :: is_le) 
1398+         self . partial_cmp ( other) . is_some_and ( |c| c . is_le ( ) ) 
13911399    } 
13921400
13931401    /// Tests greater than (for `self` and `other`) and is used by the `>` 
@@ -1405,7 +1413,7 @@ pub trait PartialOrd<Rhs: ?Sized = Self>: PartialEq<Rhs> {
14051413    #[ stable( feature = "rust1" ,  since = "1.0.0" ) ]  
14061414    #[ rustc_diagnostic_item = "cmp_partialord_gt" ]  
14071415    fn  gt ( & self ,  other :  & Rhs )  -> bool  { 
1408-         self . partial_cmp ( other) . is_some_and ( Ordering :: is_gt) 
1416+         self . partial_cmp ( other) . is_some_and ( |c| c . is_gt ( ) ) 
14091417    } 
14101418
14111419    /// Tests greater than or equal to (for `self` and `other`) and is used by 
@@ -1423,7 +1431,7 @@ pub trait PartialOrd<Rhs: ?Sized = Self>: PartialEq<Rhs> {
14231431    #[ stable( feature = "rust1" ,  since = "1.0.0" ) ]  
14241432    #[ rustc_diagnostic_item = "cmp_partialord_ge" ]  
14251433    fn  ge ( & self ,  other :  & Rhs )  -> bool  { 
1426-         self . partial_cmp ( other) . is_some_and ( Ordering :: is_ge) 
1434+         self . partial_cmp ( other) . is_some_and ( |c| c . is_ge ( ) ) 
14271435    } 
14281436} 
14291437
0 commit comments