std::cmp::Ordering - Rust (original) (raw)

Enum std::cmp::Ordering1.0.0 [−] [src]

pub enum Ordering { Less, Equal, Greater, }

An Ordering is the result of a comparison between two values.

use std::cmp::Ordering;

let result = 1.cmp(&2); assert_eq!(Ordering::Less, result);

let result = 1.cmp(&1); assert_eq!(Ordering::Equal, result);

let result = 2.cmp(&1); assert_eq!(Ordering::Greater, result);Run

An ordering where a compared value is less [than another].

An ordering where a compared value is equal [to another].

An ordering where a compared value is greater [than another].

impl [Ordering](../../std/cmp/enum.Ordering.html "enum std::cmp::Ordering")[src]

pub fn [reverse](#method.reverse)(self) -> [Ordering](../../std/cmp/enum.Ordering.html "enum std::cmp::Ordering")[src]

Reverses the Ordering.

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);Run

This method can be used to reverse a comparison:

let mut 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);Run

pub fn [then](#method.then)(self, other: [Ordering](../../std/cmp/enum.Ordering.html "enum std::cmp::Ordering")) -> [Ordering](../../std/cmp/enum.Ordering.html "enum std::cmp::Ordering")

1.17.0

[src]

Chains two orderings.

Returns self when it's not Equal. Otherwise returns other.

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);Run

`pub fn then_with(self, f: F) -> Ordering where

F: FnOnce() -> Ordering, `

1.17.0

[src]

Chains the ordering with the given function.

Returns self when it's not Equal. Otherwise calls f and returns the result.

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

impl [Debug](../../std/fmt/trait.Debug.html "trait std::fmt::Debug") for [Ordering](../../std/cmp/enum.Ordering.html "enum std::cmp::Ordering")[src]

impl [Hash](../../std/hash/trait.Hash.html "trait std::hash::Hash") for [Ordering](../../std/cmp/enum.Ordering.html "enum std::cmp::Ordering")[src]

impl [Clone](../../std/clone/trait.Clone.html "trait std::clone::Clone") for [Ordering](../../std/cmp/enum.Ordering.html "enum std::cmp::Ordering")[src]

impl [PartialOrd](../../std/cmp/trait.PartialOrd.html "trait std::cmp::PartialOrd")<[Ordering](../../std/cmp/enum.Ordering.html "enum std::cmp::Ordering")> for [Ordering](../../std/cmp/enum.Ordering.html "enum std::cmp::Ordering")[src]

fn [partial_cmp](../../std/cmp/trait.PartialOrd.html#tymethod.partial%5Fcmp)(&self, other: &[Ordering](../../std/cmp/enum.Ordering.html "enum std::cmp::Ordering")) -> [Option](../../std/option/enum.Option.html "enum std::option::Option")<[Ordering](../../std/cmp/enum.Ordering.html "enum std::cmp::Ordering")>[src]

This method returns an ordering between self and other values if one exists. Read more

fn [lt](../../std/cmp/trait.PartialOrd.html#method.lt)(&self, other: [&](../primitive.reference.html)Rhs) -> [bool](../primitive.bool.html)[src]

This method tests less than (for self and other) and is used by the < operator. Read more

fn [le](../../std/cmp/trait.PartialOrd.html#method.le)(&self, other: [&](../primitive.reference.html)Rhs) -> [bool](../primitive.bool.html)[src]

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more

fn [gt](../../std/cmp/trait.PartialOrd.html#method.gt)(&self, other: [&](../primitive.reference.html)Rhs) -> [bool](../primitive.bool.html)[src]

This method tests greater than (for self and other) and is used by the > operator. Read more

fn [ge](../../std/cmp/trait.PartialOrd.html#method.ge)(&self, other: [&](../primitive.reference.html)Rhs) -> [bool](../primitive.bool.html)[src]

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more

impl [Ord](../../std/cmp/trait.Ord.html "trait std::cmp::Ord") for [Ordering](../../std/cmp/enum.Ordering.html "enum std::cmp::Ordering")[src]

impl [Eq](../../std/cmp/trait.Eq.html "trait std::cmp::Eq") for [Ordering](../../std/cmp/enum.Ordering.html "enum std::cmp::Ordering")[src]

impl [PartialEq](../../std/cmp/trait.PartialEq.html "trait std::cmp::PartialEq")<[Ordering](../../std/cmp/enum.Ordering.html "enum std::cmp::Ordering")> for [Ordering](../../std/cmp/enum.Ordering.html "enum std::cmp::Ordering")[src]

impl [Copy](../../std/marker/trait.Copy.html "trait std:📑:Copy") for [Ordering](../../std/cmp/enum.Ordering.html "enum std::cmp::Ordering")[src]