Rollup merge of #76198 - CDirkx:const-ordering, r=dtolnay
Make some Ordering methods const Resubmission of [PR#75463](https://github.com/rust-lang/rust/pull/75463) as per [PR#76172](https://github.com/rust-lang/rust/pull/76172). Constify the following methods of `core::cmp::Ordering`: - `reverse` - `then` Insta-stabilizes these methods as const under the `const_ordering` feature, as their implementation is a trivial match and the recent stabilization of #49146 (Allow `if` and `match` in constants). Note: the `const_ordering` feature has never actually been used as these methods have not been `#[rustc_const_unstable]`. Tracking issue: #76113
This commit is contained in:
commit
69ac07608e
@ -356,8 +356,9 @@ impl Ordering {
|
||||
/// ```
|
||||
#[inline]
|
||||
#[must_use]
|
||||
#[rustc_const_stable(feature = "const_ordering", since = "1.48.0")]
|
||||
#[stable(feature = "rust1", since = "1.0.0")]
|
||||
pub fn reverse(self) -> Ordering {
|
||||
pub const fn reverse(self) -> Ordering {
|
||||
match self {
|
||||
Less => Greater,
|
||||
Equal => Equal,
|
||||
@ -394,8 +395,9 @@ impl Ordering {
|
||||
/// ```
|
||||
#[inline]
|
||||
#[must_use]
|
||||
#[rustc_const_stable(feature = "const_ordering", since = "1.48.0")]
|
||||
#[stable(feature = "ordering_chaining", since = "1.17.0")]
|
||||
pub fn then(self, other: Ordering) -> Ordering {
|
||||
pub const fn then(self, other: Ordering) -> Ordering {
|
||||
match self {
|
||||
Equal => other,
|
||||
_ => self,
|
||||
|
@ -1,4 +1,7 @@
|
||||
use core::cmp::{self, Ordering::*};
|
||||
use core::cmp::{
|
||||
self,
|
||||
Ordering::{self, *},
|
||||
};
|
||||
|
||||
#[test]
|
||||
fn test_int_totalord() {
|
||||
@ -116,3 +119,16 @@ fn test_user_defined_eq() {
|
||||
assert!(SketchyNum { num: 37 } == SketchyNum { num: 34 });
|
||||
assert!(SketchyNum { num: 25 } != SketchyNum { num: 57 });
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn ordering_const() {
|
||||
// test that the methods of `Ordering` are usable in a const context
|
||||
|
||||
const ORDERING: Ordering = Greater;
|
||||
|
||||
const REVERSE: Ordering = ORDERING.reverse();
|
||||
assert_eq!(REVERSE, Less);
|
||||
|
||||
const THEN: Ordering = Equal.then(ORDERING);
|
||||
assert_eq!(THEN, Greater);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user