mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-23 23:34:48 +00:00
Make some Ordering methods const
Constify the following methods of `core::cmp::Ordering`: - `reverse` - `then` Stabilizes these methods as const under the `const_ordering` feature. Also adds a test for these methods in a const context. Possible because of #49146 (Allow `if` and `match` in constants).
This commit is contained in:
parent
e88e908e66
commit
ea5dc0909e
@ -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,
|
||||
|
15
src/test/ui/consts/const-ordering.rs
Normal file
15
src/test/ui/consts/const-ordering.rs
Normal file
@ -0,0 +1,15 @@
|
||||
// run-pass
|
||||
|
||||
use std::cmp::Ordering;
|
||||
|
||||
// the following methods of core::cmp::Ordering are const:
|
||||
// - reverse
|
||||
// - then
|
||||
|
||||
fn main() {
|
||||
const REVERSE : Ordering = Ordering::Greater.reverse();
|
||||
assert_eq!(REVERSE, Ordering::Less);
|
||||
|
||||
const THEN : Ordering = Ordering::Equal.then(REVERSE);
|
||||
assert_eq!(THEN, Ordering::Less);
|
||||
}
|
Loading…
Reference in New Issue
Block a user