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 < b
then!(a > b)
and vice versa; and - transitivity:
a < b
andb < c
impliesa < 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 T
impl<T> PartialOrd<*mut T> for *mut T
impl<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 NoSend
impl PartialOrd<NoCopy> for NoCopy
impl PartialOrd<NoSync> for NoSync
impl PartialOrd<Managed> for Managed
impl PartialOrd<Ordering> for Ordering
impl PartialOrd<()> for ()
impl PartialOrd<bool> for bool
impl PartialOrd<char> for char
impl PartialOrd<uint> for uint
impl PartialOrd<u8> for u8
impl PartialOrd<u16> for u16
impl PartialOrd<u32> for u32
impl PartialOrd<u64> for u64
impl PartialOrd<int> for int
impl PartialOrd<i8> for i8
impl PartialOrd<i16> for i16
impl PartialOrd<i32> for i32
impl PartialOrd<i64> for i64
impl PartialOrd<f32> for f32
impl PartialOrd<f64> for f64
impl<'a, 'b, A, B> PartialOrd<&'b B> for &'a A
impl<'a, 'b, A, B> PartialOrd<&'b mut B> for &'a mut A
impl<'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 str
impl<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 CString
impl PartialOrd for FilePermission
impl PartialOrd for Path
impl PartialOrd for Path
impl PartialOrd for Duration
impl PartialOrd<Bitv> for Bitv
impl PartialOrd<BitvSet> for BitvSet
impl<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 String
impl<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>