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]
|
#[inline]
|
||||||
#[must_use]
|
#[must_use]
|
||||||
|
#[rustc_const_stable(feature = "const_ordering", since = "1.48.0")]
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
pub fn reverse(self) -> Ordering {
|
pub const fn reverse(self) -> Ordering {
|
||||||
match self {
|
match self {
|
||||||
Less => Greater,
|
Less => Greater,
|
||||||
Equal => Equal,
|
Equal => Equal,
|
||||||
@ -394,8 +395,9 @@ impl Ordering {
|
|||||||
/// ```
|
/// ```
|
||||||
#[inline]
|
#[inline]
|
||||||
#[must_use]
|
#[must_use]
|
||||||
|
#[rustc_const_stable(feature = "const_ordering", since = "1.48.0")]
|
||||||
#[stable(feature = "ordering_chaining", since = "1.17.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 {
|
match self {
|
||||||
Equal => other,
|
Equal => other,
|
||||||
_ => self,
|
_ => self,
|
||||||
|
@ -1,4 +1,7 @@
|
|||||||
use core::cmp::{self, Ordering::*};
|
use core::cmp::{
|
||||||
|
self,
|
||||||
|
Ordering::{self, *},
|
||||||
|
};
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_int_totalord() {
|
fn test_int_totalord() {
|
||||||
@ -116,3 +119,16 @@ fn test_user_defined_eq() {
|
|||||||
assert!(SketchyNum { num: 37 } == SketchyNum { num: 34 });
|
assert!(SketchyNum { num: 37 } == SketchyNum { num: 34 });
|
||||||
assert!(SketchyNum { num: 25 } != SketchyNum { num: 57 });
|
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