core::cmp::PartialOrd - Rust
Description: API documentation for the Rust `PartialOrd` trait in crate `core`.
Keywords: rust, rustlang, rust-lang, PartialOrd

# Trait core::cmp::PartialOrd 1.0.0 [−] [src]

    #[lang = "ord"]
    pub trait PartialOrd<Rhs: ?Sized = Self>: PartialEq<Rhs> {
        fn partial_cmp(&self, other: &Rhs) -> Option<Ordering>;

        fn lt(&self, other: &Rhs) -> bool { ... }
        fn le(&self, other: &Rhs) -> bool { ... }
        fn gt(&self, other: &Rhs) -> bool { ... }
        fn ge(&self, other: &Rhs) -> bool { ... }
    }

Trait for values that can be compared for a sort-order.

The comparison must satisfy, for all `a`, `b` and `c`:

- antisymmetry: if `a < b` then `!(a > b)`, as well as `a > b` implying `!(a < b)`; and
- transitivity: `a < b` and `b < c` implies `a < c`. The same must hold for both `==` and `>`.

Note that these requirements mean that the trait itself must be implemented symmetrically and transitively: if `T: PartialOrd<U>` and `U: PartialOrd<V>` then `U: PartialOrd<T>` and `T: PartialOrd<V>`.

## Derivable

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

## How can I implement `PartialOrd`?

`PartialOrd` only requires implementation of the `partial_cmp` method, with the others generated from default implementations.

However it remains possible to implement the others separately for types which do not have a total order. For example, for floating point numbers, `NaN < 0 == false` and `NaN >= 0 == false` (cf. IEEE 754-2008 section 5.11).

`PartialOrd` requires your type to be `PartialEq`.

Implementations of `PartialEq`, `PartialOrd`, and `Ord` must agree with each other. It's easy to accidentally make them disagree by deriving some of the traits and manually implementing others.

If your type is `Ord`, you can implement `partial_cmp()` by using `cmp()`:

    use std::cmp::Ordering;

    #[derive(Eq)]
    struct Person {
        id: u32,
        name: String,
        height: u32,
    }

    impl PartialOrd for Person {
        fn partial_cmp(&self, other: &Person) -> Option<Ordering> {
            Some(self.cmp(other))
        }
    }

    impl Ord for Person {
        fn cmp(&self, other: &Person) -> Ordering {
            self.height.cmp(&other.height)
        }
    }

    impl PartialEq for Person {
        fn eq(&self, other: &Person) -> bool {
            self.height == other.height
        }
    }Run

You may also find it useful to use `partial_cmp()` on your type's fields. Here is an example of `Person` types who have a floating-point `height` field that is the only field to be used for sorting:

    use std::cmp::Ordering;

    struct Person {
        id: u32,
        name: String,
        height: f64,
    }

    impl PartialOrd for Person {
        fn partial_cmp(&self, other: &Person) -> Option<Ordering> {
            self.height.partial_cmp(&other.height)
        }
    }

    impl PartialEq for Person {
        fn eq(&self, other: &Person) -> bool {
            self.height == other.height
        }
    }Run

# Examples

    let x : u32 = 0;
    let y : u32 = 1;

    assert_eq!(x < y, true);
    assert_eq!(x.lt(&y), true);Run

## Required Methods

### `fn partial_cmp(&self, other: &Rhs) -> Option<Ordering>`

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

# Examples

    use std::cmp::Ordering;

    let result = 1.0.partial_cmp(&2.0);
    assert_eq!(result, Some(Ordering::Less));

    let result = 1.0.partial_cmp(&1.0);
    assert_eq!(result, Some(Ordering::Equal));

    let result = 2.0.partial_cmp(&1.0);
    assert_eq!(result, Some(Ordering::Greater));Run

When comparison is impossible:

    let result = std::f64::NAN.partial_cmp(&1.0);
    assert_eq!(result, None);Run

## Provided Methods

### `fn lt(&self, other: &Rhs) -> bool`

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

# Examples

    let result = 1.0 < 2.0;
    assert_eq!(result, true);

    let result = 2.0 < 1.0;
    assert_eq!(result, false);Run

### `fn le(&self, other: &Rhs) -> bool`

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

# Examples

    let result = 1.0 <= 2.0;
    assert_eq!(result, true);

    let result = 2.0 <= 2.0;
    assert_eq!(result, true);Run

### `fn gt(&self, other: &Rhs) -> bool`

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

# Examples

    let result = 1.0 > 2.0;
    assert_eq!(result, false);

    let result = 2.0 > 2.0;
    assert_eq!(result, false);Run

### `fn ge(&self, other: &Rhs) -> bool`

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

# Examples

    let result = 2.0 >= 1.0;
    assert_eq!(result, true);

    let result = 2.0 >= 2.0;
    assert_eq!(result, true);Run

## Implementors

- [src]
  `impl<T: PartialOrd> PartialOrd for Wrapping<T>`
- [src]
  `impl<T: PartialOrd> PartialOrd for ManuallyDrop<T>`
- [src]
  `impl<T: PartialOrd + Zeroable> PartialOrd for NonZero<T>`
- `impl<Ret> PartialOrd for fn() -> Ret`
- `impl<Ret> PartialOrd for extern "C" fn() -> Ret`
- `impl<Ret> PartialOrd for unsafe fn() -> Ret`
- `impl<Ret> PartialOrd for unsafe extern "C" fn() -> Ret`
- `impl<Ret, A> PartialOrd for fn(_: A) -> Ret`
- `impl<Ret, A> PartialOrd for extern "C" fn(_: A) -> Ret`
- `impl<Ret, A> PartialOrd for extern "C" fn(_: A, ...) -> Ret`
- `impl<Ret, A> PartialOrd for unsafe fn(_: A) -> Ret`
- `impl<Ret, A> PartialOrd for unsafe extern "C" fn(_: A) -> Ret`
- `impl<Ret, A> PartialOrd for unsafe extern "C" fn(_: A, ...) -> Ret`
- `impl<Ret, A, B> PartialOrd for fn(_: A, _: B) -> Ret`
- `impl<Ret, A, B> PartialOrd for extern "C" fn(_: A, _: B) -> Ret`
- `impl<Ret, A, B> PartialOrd for extern "C" fn(_: A, _: B, ...) -> Ret`
- `impl<Ret, A, B> PartialOrd for unsafe fn(_: A, _: B) -> Ret`
- `impl<Ret, A, B> PartialOrd for unsafe extern "C" fn(_: A, _: B) -> Ret`
- `impl<Ret, A, B> PartialOrd for unsafe extern "C" fn(_: A, _: B, ...) -> Ret`
- `impl<Ret, A, B, C> PartialOrd for fn(_: A, _: B, _: C) -> Ret`
- `impl<Ret, A, B, C> PartialOrd for extern "C" fn(_: A, _: B, _: C) -> Ret`
- `impl<Ret, A, B, C> PartialOrd for extern "C" fn(_: A, _: B, _: C, ...) -> Ret`
- `impl<Ret, A, B, C> PartialOrd for unsafe fn(_: A, _: B, _: C) -> Ret`
- `impl<Ret, A, B, C> PartialOrd for unsafe extern "C" fn(_: A, _: B, _: C) -> Ret`
- `impl<Ret, A, B, C> PartialOrd for unsafe extern "C" fn(_: A, _: B, _: C, ...) -> Ret`
- `impl<Ret, A, B, C, D> PartialOrd for fn(_: A, _: B, _: C, _: D) -> Ret`
- `impl<Ret, A, B, C, D> PartialOrd for extern "C" fn(_: A, _: B, _: C, _: D) -> Ret`
- `impl<Ret, A, B, C, D> PartialOrd for extern "C" fn(_: A, _: B, _: C, _: D, ...) -> Ret`
- `impl<Ret, A, B, C, D> PartialOrd for unsafe fn(_: A, _: B, _: C, _: D) -> Ret`
- `impl<Ret, A, B, C, D> PartialOrd for unsafe extern "C" fn(_: A, _: B, _: C, _: D) -> Ret`
- `impl<Ret, A, B, C, D> PartialOrd for unsafe extern "C" fn(_: A, _: B, _: C, _: D, ...) -> Ret`
- `impl<Ret, A, B, C, D, E> PartialOrd for fn(_: A, _: B, _: C, _: D, _: E) -> Ret`
- `impl<Ret, A, B, C, D, E> PartialOrd for extern "C" fn(_: A, _: B, _: C, _: D, _: E) -> Ret`
- `impl<Ret, A, B, C, D, E> PartialOrd for extern "C" fn(_: A, _: B, _: C, _: D, _: E, ...) -> Ret`
- `impl<Ret, A, B, C, D, E> PartialOrd for unsafe fn(_: A, _: B, _: C, _: D, _: E) -> Ret`
- `impl<Ret, A, B, C, D, E> PartialOrd for unsafe extern "C" fn(_: A, _: B, _: C, _: D, _: E) -> Ret`
- `impl<Ret, A, B, C, D, E> PartialOrd for unsafe extern "C" fn(_: A, _: B, _: C, _: D, _: E, ...) -> Ret`
- `impl<Ret, A, B, C, D, E, F> PartialOrd for fn(_: A, _: B, _: C, _: D, _: E, _: F) -> Ret`
- `impl<Ret, A, B, C, D, E, F> PartialOrd for extern "C" fn(_: A, _: B, _: C, _: D, _: E, _: F) -> Ret`
- `impl<Ret, A, B, C, D, E, F> PartialOrd for extern "C" fn(_: A, _: B, _: C, _: D, _: E, _: F, ...) -> Ret`
- `impl<Ret, A, B, C, D, E, F> PartialOrd for unsafe fn(_: A, _: B, _: C, _: D, _: E, _: F) -> Ret`
- `impl<Ret, A, B, C, D, E, F> PartialOrd for unsafe extern "C" fn(_: A, _: B, _: C, _: D, _: E, _: F) -> Ret`
- `impl<Ret, A, B, C, D, E, F> PartialOrd for unsafe extern "C" fn(_: A, _: B, _: C, _: D, _: E, _: F, ...) -> Ret`
- `impl<Ret, A, B, C, D, E, F, G> PartialOrd for fn(_: A, _: B, _: C, _: D, _: E, _: F, _: G) -> Ret`
- `impl<Ret, A, B, C, D, E, F, G> PartialOrd for extern "C" fn(_: A, _: B, _: C, _: D, _: E, _: F, _: G) -> Ret`
- `impl<Ret, A, B, C, D, E, F, G> PartialOrd for extern "C" fn(_: A, _: B, _: C, _: D, _: E, _: F, _: G, ...) -> Ret`
- `impl<Ret, A, B, C, D, E, F, G> PartialOrd for unsafe fn(_: A, _: B, _: C, _: D, _: E, _: F, _: G) -> Ret`
- `impl<Ret, A, B, C, D, E, F, G> PartialOrd for unsafe extern "C" fn(_: A, _: B, _: C, _: D, _: E, _: F, _: G) -> Ret`
- `impl<Ret, A, B, C, D, E, F, G> PartialOrd for unsafe extern "C" fn(_: A, _: B, _: C, _: D, _: E, _: F, _: G, ...) -> Ret`
- `impl<Ret, A, B, C, D, E, F, G, H> PartialOrd for fn(_: A, _: B, _: C, _: D, _: E, _: F, _: G, _: H) -> Ret`
- `impl<Ret, A, B, C, D, E, F, G, H> PartialOrd for extern "C" fn(_: A, _: B, _: C, _: D, _: E, _: F, _: G, _: H) -> Ret`
- `impl<Ret, A, B, C, D, E, F, G, H> PartialOrd for extern "C" fn(_: A, _: B, _: C, _: D, _: E, _: F, _: G, _: H, ...) -> Ret`
- `impl<Ret, A, B, C, D, E, F, G, H> PartialOrd for unsafe fn(_: A, _: B, _: C, _: D, _: E, _: F, _: G, _: H) -> Ret`
- `impl<Ret, A, B, C, D, E, F, G, H> PartialOrd for unsafe extern "C" fn(_: A, _: B, _: C, _: D, _: E, _: F, _: G, _: H) -> Ret`
- `impl<Ret, A, B, C, D, E, F, G, H> PartialOrd for unsafe extern "C" fn(_: A, _: B, _: C, _: D, _: E, _: F, _: G, _: H, ...) -> Ret`
- `impl<Ret, A, B, C, D, E, F, G, H, I> PartialOrd for fn(_: A, _: B, _: C, _: D, _: E, _: F, _: G, _: H, _: I) -> Ret`
- `impl<Ret, A, B, C, D, E, F, G, H, I> PartialOrd for extern "C" fn(_: A, _: B, _: C, _: D, _: E, _: F, _: G, _: H, _: I) -> Ret`
- `impl<Ret, A, B, C, D, E, F, G, H, I> PartialOrd for extern "C" fn(_: A, _: B, _: C, _: D, _: E, _: F, _: G, _: H, _: I, ...) -> Ret`
- `impl<Ret, A, B, C, D, E, F, G, H, I> PartialOrd for unsafe fn(_: A, _: B, _: C, _: D, _: E, _: F, _: G, _: H, _: I) -> Ret`
- `impl<Ret, A, B, C, D, E, F, G, H, I> PartialOrd for unsafe extern "C" fn(_: A, _: B, _: C, _: D, _: E, _: F, _: G, _: H, _: I) -> Ret`
- `impl<Ret, A, B, C, D, E, F, G, H, I> PartialOrd for unsafe extern "C" fn(_: A, _: B, _: C, _: D, _: E, _: F, _: G, _: H, _: I, ...) -> Ret`
- `impl<Ret, A, B, C, D, E, F, G, H, I, J> PartialOrd for fn(_: A, _: B, _: C, _: D, _: E, _: F, _: G, _: H, _: I, _: J) -> Ret`
- `impl<Ret, A, B, C, D, E, F, G, H, I, J> PartialOrd for extern "C" fn(_: A, _: B, _: C, _: D, _: E, _: F, _: G, _: H, _: I, _: J) -> Ret`
- `impl<Ret, A, B, C, D, E, F, G, H, I, J> PartialOrd for extern "C" fn(_: A, _: B, _: C, _: D, _: E, _: F, _: G, _: H, _: I, _: J, ...) -> Ret`
- `impl<Ret, A, B, C, D, E, F, G, H, I, J> PartialOrd for unsafe fn(_: A, _: B, _: C, _: D, _: E, _: F, _: G, _: H, _: I, _: J) -> Ret`
- `impl<Ret, A, B, C, D, E, F, G, H, I, J> PartialOrd for unsafe extern "C" fn(_: A, _: B, _: C, _: D, _: E, _: F, _: G, _: H, _: I, _: J) -> Ret`
- `impl<Ret, A, B, C, D, E, F, G, H, I, J> PartialOrd for unsafe extern "C" fn(_: A, _: B, _: C, _: D, _: E, _: F, _: G, _: H, _: I, _: J, ...) -> Ret`
- `impl<Ret, A, B, C, D, E, F, G, H, I, J, K> PartialOrd for fn(_: A, _: B, _: C, _: D, _: E, _: F, _: G, _: H, _: I, _: J, _: K) -> Ret`
- `impl<Ret, A, B, C, D, E, F, G, H, I, J, K> PartialOrd for extern "C" fn(_: A, _: B, _: C, _: D, _: E, _: F, _: G, _: H, _: I, _: J, _: K) -> Ret`
- `impl<Ret, A, B, C, D, E, F, G, H, I, J, K> PartialOrd for extern "C" fn(_: A, _: B, _: C, _: D, _: E, _: F, _: G, _: H, _: I, _: J, _: K, ...) -> Ret`
- `impl<Ret, A, B, C, D, E, F, G, H, I, J, K> PartialOrd for unsafe fn(_: A, _: B, _: C, _: D, _: E, _: F, _: G, _: H, _: I, _: J, _: K) -> Ret`
- `impl<Ret, A, B, C, D, E, F, G, H, I, J, K> PartialOrd for unsafe extern "C" fn(_: A, _: B, _: C, _: D, _: E, _: F, _: G, _: H, _: I, _: J, _: K) -> Ret`
- `impl<Ret, A, B, C, D, E, F, G, H, I, J, K> PartialOrd for unsafe extern "C" fn(_: A, _: B, _: C, _: D, _: E, _: F, _: G, _: H, _: I, _: J, _: K, ...) -> Ret`
- `impl<Ret, A, B, C, D, E, F, G, H, I, J, K, L> PartialOrd for fn(_: A, _: B, _: C, _: D, _: E, _: F, _: G, _: H, _: I, _: J, _: K, _: L) -> Ret`
- `impl<Ret, A, B, C, D, E, F, G, H, I, J, K, L> PartialOrd for extern "C" fn(_: A, _: B, _: C, _: D, _: E, _: F, _: G, _: H, _: I, _: J, _: K, _: L) -> Ret`
- `impl<Ret, A, B, C, D, E, F, G, H, I, J, K, L> PartialOrd for extern "C" fn(_: A, _: B, _: C, _: D, _: E, _: F, _: G, _: H, _: I, _: J, _: K, _: L, ...) -> Ret`
- `impl<Ret, A, B, C, D, E, F, G, H, I, J, K, L> PartialOrd for unsafe fn(_: A, _: B, _: C, _: D, _: E, _: F, _: G, _: H, _: I, _: J, _: K, _: L) -> Ret`
- `impl<Ret, A, B, C, D, E, F, G, H, I, J, K, L> PartialOrd for unsafe extern "C" fn(_: A, _: B, _: C, _: D, _: E, _: F, _: G, _: H, _: I, _: J, _: K, _: L) -> Ret`
- `impl<Ret, A, B, C, D, E, F, G, H, I, J, K, L> PartialOrd for unsafe extern "C" fn(_: A, _: B, _: C, _: D, _: E, _: F, _: G, _: H, _: I, _: J, _: K, _: L, ...) -> Ret`
- `impl<T: ?Sized> PartialOrd for *const T`
- `impl<T: ?Sized> PartialOrd for *mut T`
- [src]
  `impl<T: ?Sized> PartialOrd for PhantomData<T>`
- [src]
  `impl<Y: PartialOrd, R: PartialOrd> PartialOrd for GeneratorState<Y, R>`
- `impl PartialOrd for ()`
- `impl PartialOrd for bool`
- `impl PartialOrd for f32`
- `impl PartialOrd for f64`
- `impl PartialOrd for char`
- `impl PartialOrd for usize`
- `impl PartialOrd for u8`
- `impl PartialOrd for u16`
- `impl PartialOrd for u32`
- `impl PartialOrd for u64`
- `impl PartialOrd for u128`
- `impl PartialOrd for isize`
- `impl PartialOrd for i8`
- `impl PartialOrd for i16`
- `impl PartialOrd for i32`
- `impl PartialOrd for i64`
- `impl PartialOrd for i128`
- `impl PartialOrd for !`
- `impl<'a, 'b, A: ?Sized, B: ?Sized> PartialOrd<&'b B> for &'a A where
  A: PartialOrd<B>,`
- `impl<'a, 'b, A: ?Sized, B: ?Sized> PartialOrd<&'b mut B> for &'a mut A where
  A: PartialOrd<B>,`
- [src]
  `impl<T: PartialOrd> PartialOrd for Reverse<T>`
- [src]
  `impl PartialOrd for Ordering`
- [src]
  `impl PartialOrd for Infallible`
- [src]
  `impl PartialOrd for TypeId`
- `impl<T: PartialOrd> PartialOrd for [T; 0]`
- `impl<T: PartialOrd> PartialOrd for [T; 1]`
- `impl<T: PartialOrd> PartialOrd for [T; 2]`
- `impl<T: PartialOrd> PartialOrd for [T; 3]`
- `impl<T: PartialOrd> PartialOrd for [T; 4]`
- `impl<T: PartialOrd> PartialOrd for [T; 5]`
- `impl<T: PartialOrd> PartialOrd for [T; 6]`
- `impl<T: PartialOrd> PartialOrd for [T; 7]`
- `impl<T: PartialOrd> PartialOrd for [T; 8]`
- `impl<T: PartialOrd> PartialOrd for [T; 9]`
- `impl<T: PartialOrd> PartialOrd for [T; 10]`
- `impl<T: PartialOrd> PartialOrd for [T; 11]`
- `impl<T: PartialOrd> PartialOrd for [T; 12]`
- `impl<T: PartialOrd> PartialOrd for [T; 13]`
- `impl<T: PartialOrd> PartialOrd for [T; 14]`
- `impl<T: PartialOrd> PartialOrd for [T; 15]`
- `impl<T: PartialOrd> PartialOrd for [T; 16]`
- `impl<T: PartialOrd> PartialOrd for [T; 17]`
- `impl<T: PartialOrd> PartialOrd for [T; 18]`
- `impl<T: PartialOrd> PartialOrd for [T; 19]`
- `impl<T: PartialOrd> PartialOrd for [T; 20]`
- `impl<T: PartialOrd> PartialOrd for [T; 21]`
- `impl<T: PartialOrd> PartialOrd for [T; 22]`
- `impl<T: PartialOrd> PartialOrd for [T; 23]`
- `impl<T: PartialOrd> PartialOrd for [T; 24]`
- `impl<T: PartialOrd> PartialOrd for [T; 25]`
- `impl<T: PartialOrd> PartialOrd for [T; 26]`
- `impl<T: PartialOrd> PartialOrd for [T; 27]`
- `impl<T: PartialOrd> PartialOrd for [T; 28]`
- `impl<T: PartialOrd> PartialOrd for [T; 29]`
- `impl<T: PartialOrd> PartialOrd for [T; 30]`
- `impl<T: PartialOrd> PartialOrd for [T; 31]`
- `impl<T: PartialOrd> PartialOrd for [T; 32]`
- [src]
  `impl<T: PartialOrd + Copy> PartialOrd for Cell<T>`
- [src]
  `impl<T: ?Sized + PartialOrd> PartialOrd for RefCell<T>`
- [src]
  `impl<T: PartialOrd> PartialOrd for Option<T>`
- [src]
  `impl PartialOrd for NoneError`
- [src]
  `impl<T: PartialOrd, E: PartialOrd> PartialOrd for Result<T, E>`
- `impl<T: PartialOrd> PartialOrd for [T]`
- `impl PartialOrd for str`
- [src]
  `impl PartialOrd for Error`
- `impl<A> PartialOrd for (A,) where
  A: PartialOrd + PartialEq + ?Sized,`
- `impl<A: PartialOrd + PartialEq, B> PartialOrd for (A, B) where
  B: PartialOrd + PartialEq + ?Sized,`
- `impl<A: PartialOrd + PartialEq, B: PartialOrd + PartialEq, C> PartialOrd for (A, B, C) where
  C: PartialOrd + PartialEq + ?Sized,`
- `impl<A: PartialOrd + PartialEq, B: PartialOrd + PartialEq, C: PartialOrd + PartialEq, D> PartialOrd for (A, B, C, D) where
  D: PartialOrd + PartialEq + ?Sized,`
- `impl<A: PartialOrd + PartialEq, B: PartialOrd + PartialEq, C: PartialOrd + PartialEq, D: PartialOrd + PartialEq, E> PartialOrd for (A, B, C, D, E) where
  E: PartialOrd + PartialEq + ?Sized,`
- `impl<A: PartialOrd + PartialEq, B: PartialOrd + PartialEq, C: PartialOrd + PartialEq, D: PartialOrd + PartialEq, E: PartialOrd + PartialEq, F> PartialOrd for (A, B, C, D, E, F) where
  F: PartialOrd + PartialEq + ?Sized,`
- `impl<A: PartialOrd + PartialEq, B: PartialOrd + PartialEq, C: PartialOrd + PartialEq, D: PartialOrd + PartialEq, E: PartialOrd + PartialEq, F: PartialOrd + PartialEq, G> PartialOrd for (A, B, C, D, E, F, G) where
  G: PartialOrd + PartialEq + ?Sized,`
- `impl<A: PartialOrd + PartialEq, B: PartialOrd + PartialEq, C: PartialOrd + PartialEq, D: PartialOrd + PartialEq, E: PartialOrd + PartialEq, F: PartialOrd + PartialEq, G: PartialOrd + PartialEq, H> PartialOrd for (A, B, C, D, E, F, G, H) where
  H: PartialOrd + PartialEq + ?Sized,`
- `impl<A: PartialOrd + PartialEq, B: PartialOrd + PartialEq, C: PartialOrd + PartialEq, D: PartialOrd + PartialEq, E: PartialOrd + PartialEq, F: PartialOrd + PartialEq, G: PartialOrd + PartialEq, H: PartialOrd + PartialEq, I> PartialOrd for (A, B, C, D, E, F, G, H, I) where
  I: PartialOrd + PartialEq + ?Sized,`
- `impl<A: PartialOrd + PartialEq, B: PartialOrd + PartialEq, C: PartialOrd + PartialEq, D: PartialOrd + PartialEq, E: PartialOrd + PartialEq, F: PartialOrd + PartialEq, G: PartialOrd + PartialEq, H: PartialOrd + PartialEq, I: PartialOrd + PartialEq, J> PartialOrd for (A, B, C, D, E, F, G, H, I, J) where
  J: PartialOrd + PartialEq + ?Sized,`
- `impl<A: PartialOrd + PartialEq, B: PartialOrd + PartialEq, C: PartialOrd + PartialEq, D: PartialOrd + PartialEq, E: PartialOrd + PartialEq, F: PartialOrd + PartialEq, G: PartialOrd + PartialEq, H: PartialOrd + PartialEq, I: PartialOrd + PartialEq, J: PartialOrd + PartialEq, K> PartialOrd for (A, B, C, D, E, F, G, H, I, J, K) where
  K: PartialOrd + PartialEq + ?Sized,`
- `impl<A: PartialOrd + PartialEq, B: PartialOrd + PartialEq, C: PartialOrd + PartialEq, D: PartialOrd + PartialEq, E: PartialOrd + PartialEq, F: PartialOrd + PartialEq, G: PartialOrd + PartialEq, H: PartialOrd + PartialEq, I: PartialOrd + PartialEq, J: PartialOrd + PartialEq, K: PartialOrd + PartialEq, L> PartialOrd for (A, B, C, D, E, F, G, H, I, J, K, L) where
  L: PartialOrd + PartialEq + ?Sized,`

# Help

## Keyboard Shortcuts

?
  Show this help dialog
S
  Focus the search field
↑
  Move up in search results
↓
  Move down in search results
↹
  Switch tab
⏎
  Go to active search result
+ / -
  Collapse/expand all sections

## Search Tricks

Prefix searches with a type followed by a colon (e.g. `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g. `vec -> usize` or `* -> vec`)