#[repr(i8)]pub enum Ordering {
Less,
Equal,
Greater,
}
Expand description
Variants§
Implementations§
source§impl Ordering
impl Ordering
const: 1.48.0 · sourcepub const fn reverse(self) -> Ordering
pub const fn reverse(self) -> Ordering
反转 Ordering
。
Less
变成Greater
。Greater
变成Less
。Equal
变成Equal
。
Examples
基本行为:
use std::cmp::Ordering;
assert_eq!(Ordering::Less.reverse(), Ordering::Greater);
assert_eq!(Ordering::Equal.reverse(), Ordering::Equal);
assert_eq!(Ordering::Greater.reverse(), Ordering::Less);
Run此方法可用于反转比较:
let data: &mut [_] = &mut [2, 10, 5, 8];
// 从最大到最小对数组进行排序。
data.sort_by(|a, b| a.cmp(b).reverse());
let b: &mut [_] = &mut [10, 8, 5, 2];
assert!(data == b);
Run1.17.0 (const: 1.48.0) · sourcepub const fn then(self, other: Ordering) -> Ordering
pub const fn then(self, other: Ordering) -> Ordering
链接两个排序。
如果不是 Equal
,则返回 self
。否则返回 other
。
Examples
use std::cmp::Ordering;
let result = Ordering::Equal.then(Ordering::Less);
assert_eq!(result, Ordering::Less);
let result = Ordering::Less.then(Ordering::Equal);
assert_eq!(result, Ordering::Less);
let result = Ordering::Less.then(Ordering::Greater);
assert_eq!(result, Ordering::Less);
let result = Ordering::Equal.then(Ordering::Equal);
assert_eq!(result, Ordering::Equal);
let x: (i64, i64, i64) = (1, 2, 7);
let y: (i64, i64, i64) = (1, 5, 3);
let result = x.0.cmp(&y.0).then(x.1.cmp(&y.1)).then(x.2.cmp(&y.2));
assert_eq!(result, Ordering::Less);
Run1.17.0 · sourcepub fn then_with<F: FnOnce() -> Ordering>(self, f: F) -> Ordering
pub fn then_with<F: FnOnce() -> Ordering>(self, f: F) -> Ordering
用给定的函数链接顺序。
如果不是 Equal
,则返回 self
。
否则,调用 f
并返回结果。
Examples
use std::cmp::Ordering;
let result = Ordering::Equal.then_with(|| Ordering::Less);
assert_eq!(result, Ordering::Less);
let result = Ordering::Less.then_with(|| Ordering::Equal);
assert_eq!(result, Ordering::Less);
let result = Ordering::Less.then_with(|| Ordering::Greater);
assert_eq!(result, Ordering::Less);
let result = Ordering::Equal.then_with(|| Ordering::Equal);
assert_eq!(result, Ordering::Equal);
let x: (i64, i64, i64) = (1, 2, 7);
let y: (i64, i64, i64) = (1, 5, 3);
let result = x.0.cmp(&y.0).then_with(|| x.1.cmp(&y.1)).then_with(|| x.2.cmp(&y.2));
assert_eq!(result, Ordering::Less);
Run