Trait std::cmp::PartialOrdStable
[-]
[+]
[src]
pub trait PartialOrd<Rhs = 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 < bthen!(a > b)and vice versa; and - transitivity:
a < bandb < cimpliesa < 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>.
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).
Required Methods
fn partial_cmp(&self, other: &Rhs) -> Option<Ordering>
This method returns an ordering between self and other values
if one exists.
Provided Methods
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self and other) and is used by the < operator.
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (<=).
fn gt(&self, other: &Rhs) -> bool
This method tests greater than (>).
fn ge(&self, other: &Rhs) -> bool
This method tests greater than or equal to (>=).
Implementors
impl<T: Zeroable + PartialOrd<T>> PartialOrd<NonZero<T>> for NonZero<T>impl<T> PartialOrd<*const T> for *const Timpl<T> PartialOrd<*mut T> for *mut Timpl<T: PartialOrd<T>> PartialOrd<CovariantType<T>> for CovariantType<T>impl<T: PartialOrd<T>> PartialOrd<ContravariantType<T>> for ContravariantType<T>impl<T: PartialOrd<T>> PartialOrd<InvariantType<T>> for InvariantType<T>impl<'a> PartialOrd<CovariantLifetime<'a>> for CovariantLifetime<'a>impl<'a> PartialOrd<ContravariantLifetime<'a>> for ContravariantLifetime<'a>impl<'a> PartialOrd<InvariantLifetime<'a>> for InvariantLifetime<'a>impl PartialOrd<NoSend> for NoSendimpl PartialOrd<NoCopy> for NoCopyimpl PartialOrd<NoSync> for NoSyncimpl PartialOrd<Managed> for Managedimpl PartialOrd<Ordering> for Orderingimpl PartialOrd<()> for ()impl PartialOrd<bool> for boolimpl PartialOrd<char> for charimpl PartialOrd<uint> for uintimpl PartialOrd<u8> for u8impl PartialOrd<u16> for u16impl PartialOrd<u32> for u32impl PartialOrd<u64> for u64impl PartialOrd<int> for intimpl PartialOrd<i8> for i8impl PartialOrd<i16> for i16impl PartialOrd<i32> for i32impl PartialOrd<i64> for i64impl PartialOrd<f32> for f32impl PartialOrd<f64> for f64impl<'a, 'b, A, B> PartialOrd<&'b B> for &'a Aimpl<'a, 'b, A, B> PartialOrd<&'b mut B> for &'a mut Aimpl<'a, T, B> PartialOrd<Cow<'a, T, B>> for Cow<'a, T, B>impl<T: PartialOrd<T>> PartialOrd<Option<T>> for Option<T>impl<T: PartialOrd<T>, E: PartialOrd<E>> PartialOrd<Result<T, E>> for Result<T, E>impl<T: PartialOrd<T>> PartialOrd<[T]> for [T]impl PartialOrd<str> for strimpl<A: PartialEq<A> + PartialOrd<A>> PartialOrd<(A,)> for (A,)impl<A: PartialEq<A> + PartialOrd<A>, B: PartialEq<B> + PartialOrd<B>> PartialOrd<(A, B)> for (A, B)impl<A: PartialEq<A> + PartialOrd<A>, B: PartialEq<B> + PartialOrd<B>, C: PartialEq<C> + PartialOrd<C>> PartialOrd<(A, B, C)> for (A, B, C)impl<A: PartialEq<A> + PartialOrd<A>, B: PartialEq<B> + PartialOrd<B>, C: PartialEq<C> + PartialOrd<C>, D: PartialEq<D> + PartialOrd<D>> PartialOrd<(A, B, C, D)> for (A, B, C, D)impl<A: PartialEq<A> + PartialOrd<A>, B: PartialEq<B> + PartialOrd<B>, C: PartialEq<C> + PartialOrd<C>, D: PartialEq<D> + PartialOrd<D>, E: PartialEq<E> + PartialOrd<E>> PartialOrd<(A, B, C, D, E)> for (A, B, C, D, E)impl<A: PartialEq<A> + PartialOrd<A>, B: PartialEq<B> + PartialOrd<B>, C: PartialEq<C> + PartialOrd<C>, D: PartialEq<D> + PartialOrd<D>, E: PartialEq<E> + PartialOrd<E>, F: PartialEq<F> + PartialOrd<F>> PartialOrd<(A, B, C, D, E, F)> for (A, B, C, D, E, F)impl<A: PartialEq<A> + PartialOrd<A>, B: PartialEq<B> + PartialOrd<B>, C: PartialEq<C> + PartialOrd<C>, D: PartialEq<D> + PartialOrd<D>, E: PartialEq<E> + PartialOrd<E>, F: PartialEq<F> + PartialOrd<F>, G: PartialEq<G> + PartialOrd<G>> PartialOrd<(A, B, C, D, E, F, G)> for (A, B, C, D, E, F, G)impl<A: PartialEq<A> + PartialOrd<A>, B: PartialEq<B> + PartialOrd<B>, C: PartialEq<C> + PartialOrd<C>, D: PartialEq<D> + PartialOrd<D>, E: PartialEq<E> + PartialOrd<E>, F: PartialEq<F> + PartialOrd<F>, G: PartialEq<G> + PartialOrd<G>, H: PartialEq<H> + PartialOrd<H>> PartialOrd<(A, B, C, D, E, F, G, H)> for (A, B, C, D, E, F, G, H)impl<A: PartialEq<A> + PartialOrd<A>, B: PartialEq<B> + PartialOrd<B>, C: PartialEq<C> + PartialOrd<C>, D: PartialEq<D> + PartialOrd<D>, E: PartialEq<E> + PartialOrd<E>, F: PartialEq<F> + PartialOrd<F>, G: PartialEq<G> + PartialOrd<G>, H: PartialEq<H> + PartialOrd<H>, I: PartialEq<I> + PartialOrd<I>> PartialOrd<(A, B, C, D, E, F, G, H, I)> for (A, B, C, D, E, F, G, H, I)impl<A: PartialEq<A> + PartialOrd<A>, B: PartialEq<B> + PartialOrd<B>, C: PartialEq<C> + PartialOrd<C>, D: PartialEq<D> + PartialOrd<D>, E: PartialEq<E> + PartialOrd<E>, F: PartialEq<F> + PartialOrd<F>, G: PartialEq<G> + PartialOrd<G>, H: PartialEq<H> + PartialOrd<H>, I: PartialEq<I> + PartialOrd<I>, J: PartialEq<J> + PartialOrd<J>> PartialOrd<(A, B, C, D, E, F, G, H, I, J)> for (A, B, C, D, E, F, G, H, I, J)impl<A: PartialEq<A> + PartialOrd<A>, B: PartialEq<B> + PartialOrd<B>, C: PartialEq<C> + PartialOrd<C>, D: PartialEq<D> + PartialOrd<D>, E: PartialEq<E> + PartialOrd<E>, F: PartialEq<F> + PartialOrd<F>, G: PartialEq<G> + PartialOrd<G>, H: PartialEq<H> + PartialOrd<H>, I: PartialEq<I> + PartialOrd<I>, J: PartialEq<J> + PartialOrd<J>, K: PartialEq<K> + PartialOrd<K>> PartialOrd<(A, B, C, D, E, F, G, H, I, J, K)> for (A, B, C, D, E, F, G, H, I, J, K)impl<A: PartialEq<A> + PartialOrd<A>, B: PartialEq<B> + PartialOrd<B>, C: PartialEq<C> + PartialOrd<C>, D: PartialEq<D> + PartialOrd<D>, E: PartialEq<E> + PartialOrd<E>, F: PartialEq<F> + PartialOrd<F>, G: PartialEq<G> + PartialOrd<G>, H: PartialEq<H> + PartialOrd<H>, I: PartialEq<I> + PartialOrd<I>, J: PartialEq<J> + PartialOrd<J>, K: PartialEq<K> + PartialOrd<K>, L: PartialEq<L> + PartialOrd<L>> PartialOrd<(A, B, C, D, E, F, G, H, I, J, K, L)> for (A, B, C, D, E, F, G, H, I, J, K, L)impl<T: PartialOrd<T>> PartialOrd<[T, ..0]> for [T, ..0]impl<T: PartialOrd<T>> PartialOrd<[T, ..1]> for [T, ..1]impl<T: PartialOrd<T>> PartialOrd<[T, ..2]> for [T, ..2]impl<T: PartialOrd<T>> PartialOrd<[T, ..3]> for [T, ..3]impl<T: PartialOrd<T>> PartialOrd<[T, ..4]> for [T, ..4]impl<T: PartialOrd<T>> PartialOrd<[T, ..5]> for [T, ..5]impl<T: PartialOrd<T>> PartialOrd<[T, ..6]> for [T, ..6]impl<T: PartialOrd<T>> PartialOrd<[T, ..7]> for [T, ..7]impl<T: PartialOrd<T>> PartialOrd<[T, ..8]> for [T, ..8]impl<T: PartialOrd<T>> PartialOrd<[T, ..9]> for [T, ..9]impl<T: PartialOrd<T>> PartialOrd<[T, ..10]> for [T, ..10]impl<T: PartialOrd<T>> PartialOrd<[T, ..11]> for [T, ..11]impl<T: PartialOrd<T>> PartialOrd<[T, ..12]> for [T, ..12]impl<T: PartialOrd<T>> PartialOrd<[T, ..13]> for [T, ..13]impl<T: PartialOrd<T>> PartialOrd<[T, ..14]> for [T, ..14]impl<T: PartialOrd<T>> PartialOrd<[T, ..15]> for [T, ..15]impl<T: PartialOrd<T>> PartialOrd<[T, ..16]> for [T, ..16]impl<T: PartialOrd<T>> PartialOrd<[T, ..17]> for [T, ..17]impl<T: PartialOrd<T>> PartialOrd<[T, ..18]> for [T, ..18]impl<T: PartialOrd<T>> PartialOrd<[T, ..19]> for [T, ..19]impl<T: PartialOrd<T>> PartialOrd<[T, ..20]> for [T, ..20]impl<T: PartialOrd<T>> PartialOrd<[T, ..21]> for [T, ..21]impl<T: PartialOrd<T>> PartialOrd<[T, ..22]> for [T, ..22]impl<T: PartialOrd<T>> PartialOrd<[T, ..23]> for [T, ..23]impl<T: PartialOrd<T>> PartialOrd<[T, ..24]> for [T, ..24]impl<T: PartialOrd<T>> PartialOrd<[T, ..25]> for [T, ..25]impl<T: PartialOrd<T>> PartialOrd<[T, ..26]> for [T, ..26]impl<T: PartialOrd<T>> PartialOrd<[T, ..27]> for [T, ..27]impl<T: PartialOrd<T>> PartialOrd<[T, ..28]> for [T, ..28]impl<T: PartialOrd<T>> PartialOrd<[T, ..29]> for [T, ..29]impl<T: PartialOrd<T>> PartialOrd<[T, ..30]> for [T, ..30]impl<T: PartialOrd<T>> PartialOrd<[T, ..31]> for [T, ..31]impl<T: PartialOrd<T>> PartialOrd<[T, ..32]> for [T, ..32]impl PartialOrd for CStringimpl PartialOrd for FilePermissionimpl PartialOrd for Pathimpl PartialOrd for Pathimpl PartialOrd for Durationimpl PartialOrd<Bitv> for Bitvimpl PartialOrd<BitvSet> for BitvSetimpl<K: PartialOrd<K>, V: PartialOrd<V>> PartialOrd<BTreeMap<K, V>> for BTreeMap<K, V>impl<T: PartialOrd<T>> PartialOrd<BTreeSet<T>> for BTreeSet<T>impl<A: PartialOrd<A>> PartialOrd<DList<A>> for DList<A>impl<E: PartialOrd<E>> PartialOrd<EnumSet<E>> for EnumSet<E>impl<A: PartialOrd<A>> PartialOrd<RingBuf<A>> for RingBuf<A>impl<'a> PartialOrd<MaybeOwned<'a>> for MaybeOwned<'a>impl PartialOrd<String> for Stringimpl<T: PartialOrd<T>> PartialOrd<Vec<T>> for Vec<T>impl<V: PartialOrd<V>> PartialOrd<VecMap<V>> for VecMap<V>impl<T: PartialOrd<T>> PartialOrd<Box<T>> for Box<T>impl<T: PartialOrd<T>> PartialOrd<Arc<T>> for Arc<T>impl<T: PartialOrd<T>> PartialOrd<Rc<T>> for Rc<T>