# Trait std::cmp::Ord [−] [src]

```pub trait Ord: Eq + PartialOrd<Self> {
fn cmp(&self, other: &Self) -> Ordering;
}```

Trait for types that form a total order.

An order is a total order if it is (for all `a`, `b` and `c`):

• total and antisymmetric: exactly one of `a < b`, `a == b` or `a > b` is true; and
• transitive, `a < b` and `b < c` implies `a < c`. The same must hold for both `==` and `>`.

This trait can be used with `#[derive]`. When `derive`d, it will produce a lexicographic ordering based on the top-to-bottom declaration order of the struct's members.

## Required Methods

### `fn cmp(&self, other: &Self) -> Ordering`

This method returns an `Ordering` between `self` and `other`.

By convention, `self.cmp(&other)` returns the ordering matching the expression `self <operator> other` if true.

# Examples

fn main() { use std::cmp::Ordering; assert_eq!(5.cmp(&10), Ordering::Less); assert_eq!(10.cmp(&5), Ordering::Greater); assert_eq!(5.cmp(&5), Ordering::Equal); }
```use std::cmp::Ordering;

assert_eq!(5.cmp(&10), Ordering::Less);
assert_eq!(10.cmp(&5), Ordering::Greater);
assert_eq!(5.cmp(&5), Ordering::Equal);```

## Implementors

• `impl<A, B, C, D, E, F, G, H, I, J, K, L> Ord for (A, B, C, D, E, F, G, H, I, J, K, L) where I: Ord, C: Ord, H: Ord, G: Ord, E: Ord, D: Ord, F: Ord, J: Ord, B: Ord, A: Ord, K: Ord, L: Ord`
• `impl<A, B, C, D, E, F, G, H, I, J, K> Ord for (A, B, C, D, E, F, G, H, I, J, K) where B: Ord, I: Ord, C: Ord, F: Ord, A: Ord, J: Ord, K: Ord, D: Ord, H: Ord, E: Ord, G: Ord`
• `impl<A, B, C, D, E, F, G, H, I, J> Ord for (A, B, C, D, E, F, G, H, I, J) where G: Ord, E: Ord, I: Ord, H: Ord, A: Ord, B: Ord, J: Ord, C: Ord, F: Ord, D: Ord`
• `impl<A, B, C, D, E, F, G, H, I> Ord for (A, B, C, D, E, F, G, H, I) where F: Ord, E: Ord, C: Ord, B: Ord, A: Ord, H: Ord, G: Ord, D: Ord, I: Ord`
• `impl<A, B, C, D, E, F, G, H> Ord for (A, B, C, D, E, F, G, H) where A: Ord, G: Ord, E: Ord, B: Ord, H: Ord, C: Ord, D: Ord, F: Ord`
• `impl<A, B, C, D, E, F, G> Ord for (A, B, C, D, E, F, G) where A: Ord, F: Ord, B: Ord, C: Ord, G: Ord, E: Ord, D: Ord`
• `impl<A, B, C, D, E, F> Ord for (A, B, C, D, E, F) where A: Ord, B: Ord, F: Ord, E: Ord, C: Ord, D: Ord`
• `impl<A, B, C, D, E> Ord for (A, B, C, D, E) where E: Ord, B: Ord, A: Ord, D: Ord, C: Ord`
• `impl<A, B, C, D> Ord for (A, B, C, D) where C: Ord, D: Ord, B: Ord, A: Ord`
• `impl<A, B, C> Ord for (A, B, C) where B: Ord, C: Ord, A: Ord`
• `impl<A, B> Ord for (A, B) where B: Ord, A: Ord`
• `impl<A> Ord for (A,) where A: Ord`
• `impl Ord for str`
• `impl<T> Ord for [T] where T: Ord`
• `impl<T> Ord for [T; 32] where T: Ord`
• `impl<T> Ord for [T; 31] where T: Ord`
• `impl<T> Ord for [T; 30] where T: Ord`
• `impl<T> Ord for [T; 29] where T: Ord`
• `impl<T> Ord for [T; 28] where T: Ord`
• `impl<T> Ord for [T; 27] where T: Ord`
• `impl<T> Ord for [T; 26] where T: Ord`
• `impl<T> Ord for [T; 25] where T: Ord`
• `impl<T> Ord for [T; 24] where T: Ord`
• `impl<T> Ord for [T; 23] where T: Ord`
• `impl<T> Ord for [T; 22] where T: Ord`
• `impl<T> Ord for [T; 21] where T: Ord`
• `impl<T> Ord for [T; 20] where T: Ord`
• `impl<T> Ord for [T; 19] where T: Ord`
• `impl<T> Ord for [T; 18] where T: Ord`
• `impl<T> Ord for [T; 17] where T: Ord`
• `impl<T> Ord for [T; 16] where T: Ord`
• `impl<T> Ord for [T; 15] where T: Ord`
• `impl<T> Ord for [T; 14] where T: Ord`
• `impl<T> Ord for [T; 13] where T: Ord`
• `impl<T> Ord for [T; 12] where T: Ord`
• `impl<T> Ord for [T; 11] where T: Ord`
• `impl<T> Ord for [T; 10] where T: Ord`
• `impl<T> Ord for [T; 9] where T: Ord`
• `impl<T> Ord for [T; 8] where T: Ord`
• `impl<T> Ord for [T; 7] where T: Ord`
• `impl<T> Ord for [T; 6] where T: Ord`
• `impl<T> Ord for [T; 5] where T: Ord`
• `impl<T> Ord for [T; 4] where T: Ord`
• `impl<T> Ord for [T; 3] where T: Ord`
• `impl<T> Ord for [T; 2] where T: Ord`
• `impl<T> Ord for [T; 1] where T: Ord`
• `impl<T> Ord for [T; 0] where T: Ord`
• `impl Ord for i64`
• `impl Ord for i32`
• `impl Ord for i16`
• `impl Ord for i8`
• `impl Ord for isize`
• `impl Ord for u64`
• `impl Ord for u32`
• `impl Ord for u16`
• `impl Ord for u8`
• `impl Ord for usize`
• `impl Ord for char`
• `impl Ord for bool`
• `impl Ord for ()`
• `impl<T> Ord for *mut T where T: ?Sized`
• `impl<T> Ord for *const T where T: ?Sized`
• `impl Ord for Ordering`
• `impl<T> Ord for PhantomData<T> where T: ?Sized`
• `impl<T, E> Ord for Result<T, E> where T: Ord, E: Ord`
• `impl<T> Ord for Option<T> where T: Ord`
• `impl<T> Ord for Box<T> where T: Ord + ?Sized`
• `impl<T> Ord for Rc<T> where T: Ord + ?Sized`
• `impl<'a, B> Ord for Cow<'a, B> where B: Ord + ToOwned + ?Sized`
• `impl Ord for String`
• `impl<T> Ord for Vec<T> where T: Ord`
• `impl<T> Ord for Wrapping<T> where T: Ord`
• `impl<K, V> Ord for BTreeMap<K, V> where V: Ord, K: Ord`
• `impl<T> Ord for BTreeSet<T> where T: Ord`
• `impl<A> Ord for LinkedList<A> where A: Ord`
• `impl<A> Ord for VecDeque<A> where A: Ord`
• `impl Ord for CString`
• `impl Ord for CStr`
• `impl Ord for OsString`
• `impl Ord for OsStr`
• `impl Ord for IpAddr`
• `impl Ord for Ipv4Addr`
• `impl Ord for Ipv6Addr`
• `impl<'a> Ord for Prefix<'a>`
• `impl<'a> Ord for PrefixComponent<'a>`
• `impl<'a> Ord for Component<'a>`
• `impl<'a> Ord for Components<'a>`
• `impl Ord for PathBuf`
• `impl Ord for Path`
• `impl<T> Ord for Arc<T> where T: Ord + ?Sized`
• `impl Ord for Duration`
• `impl Ord for Instant`
• `impl Ord for SystemTime`