#[repr(i8)]pub enum Ordering {
Less = -1,
Equal = 0,
Greater = 1,
}
Expand description
An Ordering
is the result of a comparison between two values.
§Examples
Variants§
Less = -1
An ordering where a compared value is less than another.
Equal = 0
An ordering where a compared value is equal to another.
Greater = 1
An ordering where a compared value is greater than another.
Implementations§
Source§impl Ordering
impl Ordering
const fn as_raw(self) -> i8
1.53.0 (const: 1.53.0) · Sourcepub const fn is_eq(self) -> bool
pub const fn is_eq(self) -> bool
Returns true
if the ordering is the Equal
variant.
§Examples
1.53.0 (const: 1.53.0) · Sourcepub const fn is_ne(self) -> bool
pub const fn is_ne(self) -> bool
Returns true
if the ordering is not the Equal
variant.
§Examples
1.53.0 (const: 1.53.0) · Sourcepub const fn is_lt(self) -> bool
pub const fn is_lt(self) -> bool
Returns true
if the ordering is the Less
variant.
§Examples
1.53.0 (const: 1.53.0) · Sourcepub const fn is_gt(self) -> bool
pub const fn is_gt(self) -> bool
Returns true
if the ordering is the Greater
variant.
§Examples
1.53.0 (const: 1.53.0) · Sourcepub const fn is_le(self) -> bool
pub const fn is_le(self) -> bool
Returns true
if the ordering is either the Less
or Equal
variant.
§Examples
1.53.0 (const: 1.53.0) · Sourcepub const fn is_ge(self) -> bool
pub const fn is_ge(self) -> bool
Returns true
if the ordering is either the Greater
or Equal
variant.
§Examples
1.0.0 (const: 1.48.0) · Sourcepub const fn reverse(self) -> Ordering
pub const fn reverse(self) -> Ordering
Reverses the Ordering
.
Less
becomesGreater
.Greater
becomesLess
.Equal
becomesEqual
.
§Examples
Basic behavior:
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);
This method can be used to reverse a comparison:
1.17.0 (const: 1.48.0) · Sourcepub const fn then(self, other: Ordering) -> Ordering
pub const fn then(self, other: Ordering) -> Ordering
Chains two orderings.
Returns self
when it’s not Equal
. Otherwise returns 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);
1.17.0 · Sourcepub fn then_with<F: FnOnce() -> Ordering>(self, f: F) -> Ordering
pub fn then_with<F: FnOnce() -> Ordering>(self, f: F) -> Ordering
Chains the ordering with the given function.
Returns self
when it’s not Equal
. Otherwise calls f
and returns
the result.
§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);
Trait Implementations§
1.0.0 · Source§impl Ord for Ordering
impl Ord for Ordering
1.0.0 · Source§impl PartialOrd for Ordering
impl PartialOrd for Ordering
Source§#[doc(hidden)] fn __chaining_lt(&self, other: &Rhs) -> ControlFlow<bool>
#[doc(hidden)] fn __chaining_lt(&self, other: &Rhs) -> ControlFlow<bool>
partial_ord_chaining_methods
)self == other
, returns ControlFlow::Continue(())
.
Otherwise, returns ControlFlow::Break(self < other)
. Read moreSource§#[doc(hidden)] fn __chaining_le(&self, other: &Rhs) -> ControlFlow<bool>
#[doc(hidden)] fn __chaining_le(&self, other: &Rhs) -> ControlFlow<bool>
partial_ord_chaining_methods
)__chaining_lt
, but for <=
instead of <
.Source§#[doc(hidden)] fn __chaining_gt(&self, other: &Rhs) -> ControlFlow<bool>
#[doc(hidden)] fn __chaining_gt(&self, other: &Rhs) -> ControlFlow<bool>
partial_ord_chaining_methods
)__chaining_lt
, but for >
instead of <
.Source§#[doc(hidden)] fn __chaining_ge(&self, other: &Rhs) -> ControlFlow<bool>
#[doc(hidden)] fn __chaining_ge(&self, other: &Rhs) -> ControlFlow<bool>
partial_ord_chaining_methods
)__chaining_lt
, but for >=
instead of <
.impl BytewiseEq for Ordering
impl Copy for Ordering
impl StructuralPartialEq for Ordering
Auto Trait Implementations§
impl Freeze for Ordering
impl RefUnwindSafe for Ordering
impl Send for Ordering
impl Sync for Ordering
impl Unpin for Ordering
impl UnsafeUnpin for Ordering
impl UnwindSafe for Ordering
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> SizedTypeProperties for T
impl<T> SizedTypeProperties for T
Source§#[doc(hidden)] const IS_ZST: bool = _
#[doc(hidden)] const IS_ZST: bool = _
sized_type_properties
)Source§#[doc(hidden)] const LAYOUT: Layout = _
#[doc(hidden)] const LAYOUT: Layout = _
sized_type_properties
)Source§#[doc(hidden)] const MAX_SLICE_LEN: usize = _
#[doc(hidden)] const MAX_SLICE_LEN: usize = _
sized_type_properties
)[Self]
. Read more