Trait wasmer_types::lib::std::cmp::Ord 1.0.0[−][src]
pub trait Ord: Eq + PartialOrd<Self> { #[must_use] fn cmp(&self, other: &Self) -> Ordering; #[must_use] fn max(self, other: Self) -> Self { ... } #[must_use] fn min(self, other: Self) -> Self { ... } #[must_use] fn clamp(self, min: Self, max: Self) -> Self { ... } }
Expand description
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 asymmetric: exactly one of
a < b
,a == b
ora > b
is true; and - transitive,
a < b
andb < c
impliesa < c
. The same must hold for both==
and>
.
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 discriminant order.
Lexicographical comparison
Lexicographical comparison is an operation with the following properties:
- Two sequences are compared element by element.
- The first mismatching element defines which sequence is lexicographically less or greater than the other.
- If one sequence is a prefix of another, the shorter sequence is lexicographically less than the other.
- If two sequence have equivalent elements and are of the same length, then the sequences are lexicographically equal.
- An empty sequence is lexicographically less than any non-empty sequence.
- Two empty sequences are lexicographically equal.
How can I implement Ord
?
Ord
requires that the type also be PartialOrd
and Eq
(which requires PartialEq
).
Then you must define an implementation for cmp
. You may find it useful to use
cmp
on your type’s fields.
Implementations of PartialEq
, PartialOrd
, and Ord
must
agree with each other. That is, a.cmp(b) == Ordering::Equal
if
and only if a == b
and Some(a.cmp(b)) == a.partial_cmp(b)
for
all a
and b
. It’s easy to accidentally make them disagree by
deriving some of the traits and manually implementing others.
Here’s an example where you want to sort people by height only, disregarding id
and name
:
use std::cmp::Ordering; #[derive(Eq)] struct Person { id: u32, name: String, height: u32, } impl Ord for Person { fn cmp(&self, other: &Self) -> Ordering { self.height.cmp(&other.height) } } impl PartialOrd for Person { fn partial_cmp(&self, other: &Self) -> Option<Ordering> { Some(self.cmp(other)) } } impl PartialEq for Person { fn eq(&self, other: &Self) -> bool { self.height == other.height } }
Required methods
#[must_use]fn cmp(&self, other: &Self) -> Ordering
[src]
#[must_use]fn cmp(&self, other: &Self) -> Ordering
[src]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
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);
Provided methods
#[must_use]fn max(self, other: Self) -> Self
1.21.0[src]
#[must_use]fn max(self, other: Self) -> Self
1.21.0[src]Compares and returns the maximum of two values.
Returns the second argument if the comparison determines them to be equal.
Examples
assert_eq!(2, 1.max(2)); assert_eq!(2, 2.max(2));
#[must_use]fn min(self, other: Self) -> Self
1.21.0[src]
#[must_use]fn min(self, other: Self) -> Self
1.21.0[src]Compares and returns the minimum of two values.
Returns the first argument if the comparison determines them to be equal.
Examples
assert_eq!(1, 1.min(2)); assert_eq!(2, 2.min(2));
Implementations on Foreign Types
impl Ord for SocketAddrV4
[src]
impl Ord for SocketAddrV4
[src]pub fn cmp(&self, other: &SocketAddrV4) -> Ordering
[src]
impl<'_> Ord for PrefixComponent<'_>
[src]
impl<'_> Ord for PrefixComponent<'_>
[src]pub fn cmp(&self, other: &PrefixComponent<'_>) -> Ordering
[src]
impl Ord for SocketAddrV6
[src]
impl Ord for SocketAddrV6
[src]pub fn cmp(&self, other: &SocketAddrV6) -> Ordering
[src]
impl Ord for SocketAddr
[src]
impl Ord for SocketAddr
[src]pub fn cmp(&self, other: &SocketAddr) -> Ordering
[src]
impl Ord for SystemTime
[src]
impl Ord for SystemTime
[src]pub fn cmp(&self, other: &SystemTime) -> Ordering
[src]
impl<'_> Ord for Components<'_>
[src]
impl<'_> Ord for Components<'_>
[src]pub fn cmp(&self, other: &Components<'_>) -> Ordering
[src]
impl<Ret, A, B, C, D, E, F, G, H, I, J> Ord for unsafe extern "C" fn(A, B, C, D, E, F, G, H, I, J, ...) -> Ret
[src]
impl<Ret, A, B, C, D, E, F, G, H, I, J> Ord for unsafe extern "C" fn(A, B, C, D, E, F, G, H, I, J, ...) -> Ret
[src]impl<Ret, A, B, C, D, E, F, G, H, I, J, K, L> Ord for unsafe extern "C" fn(A, B, C, D, E, F, G, H, I, J, K, L) -> Ret
[src]
impl<Ret, A, B, C, D, E, F, G, H, I, J, K, L> Ord for unsafe extern "C" fn(A, B, C, D, E, F, G, H, I, J, K, L) -> Ret
[src]impl Ord for NonZeroU128
[src]
impl Ord for NonZeroU128
[src]pub fn cmp(&self, other: &NonZeroU128) -> Ordering
[src]
impl<Ret, A, B, C, D, E, F, G, H, I> Ord for extern "C" fn(A, B, C, D, E, F, G, H, I, ...) -> Ret
[src]
impl<Ret, A, B, C, D, E, F, G, H, I> Ord for extern "C" fn(A, B, C, D, E, F, G, H, I, ...) -> Ret
[src]impl Ord for NonZeroI16
[src]
impl Ord for NonZeroI16
[src]pub fn cmp(&self, other: &NonZeroI16) -> Ordering
[src]
impl<Ret, A, B, C, D, E, F, G, H, I> Ord for unsafe extern "C" fn(A, B, C, D, E, F, G, H, I) -> Ret
[src]
impl<Ret, A, B, C, D, E, F, G, H, I> Ord for unsafe extern "C" fn(A, B, C, D, E, F, G, H, I) -> Ret
[src]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
C: Ord,
K: Ord,
A: Ord,
F: Ord,
E: Ord,
D: Ord,
I: Ord,
B: Ord,
G: Ord,
H: Ord,
J: Ord,
L: Ord + ?Sized,
[src]
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
C: Ord,
K: Ord,
A: Ord,
F: Ord,
E: Ord,
D: Ord,
I: Ord,
B: Ord,
G: Ord,
H: Ord,
J: Ord,
L: Ord + ?Sized,
[src]impl<A, B, C, D, E, F, G> Ord for (A, B, C, D, E, F, G) where
C: Ord,
A: Ord,
F: Ord,
E: Ord,
D: Ord,
B: Ord,
G: Ord + ?Sized,
[src]
impl<A, B, C, D, E, F, G> Ord for (A, B, C, D, E, F, G) where
C: Ord,
A: Ord,
F: Ord,
E: Ord,
D: Ord,
B: Ord,
G: Ord + ?Sized,
[src]impl Ord for NonZeroU16
[src]
impl Ord for NonZeroU16
[src]pub fn cmp(&self, other: &NonZeroU16) -> Ordering
[src]
impl Ord for str
[src]
impl Ord for str
[src]Implements ordering of strings.
Strings are ordered lexicographically by their byte values. This orders Unicode code
points based on their positions in the code charts. This is not necessarily the same as
“alphabetical” order, which varies by language and locale. Sorting strings according to
culturally-accepted standards requires locale-specific data that is outside the scope of
the str
type.
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
C: Ord,
K: Ord + ?Sized,
A: Ord,
F: Ord,
E: Ord,
D: Ord,
I: Ord,
B: Ord,
G: Ord,
H: Ord,
J: Ord,
[src]
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
C: Ord,
K: Ord + ?Sized,
A: Ord,
F: Ord,
E: Ord,
D: Ord,
I: Ord,
B: Ord,
G: Ord,
H: Ord,
J: Ord,
[src]impl<Ret, A, B, C, D, E, F, G, H, I, J, K> Ord for extern "C" fn(A, B, C, D, E, F, G, H, I, J, K) -> Ret
[src]
impl<Ret, A, B, C, D, E, F, G, H, I, J, K> Ord for extern "C" fn(A, B, C, D, E, F, G, H, I, J, K) -> Ret
[src]impl<Ret, A, B, C, D, E, F, G, H, I, J, K, L> Ord for fn(A, B, C, D, E, F, G, H, I, J, K, L) -> Ret
[src]
impl<Ret, A, B, C, D, E, F, G, H, I, J, K, L> Ord for fn(A, B, C, D, E, F, G, H, I, J, K, L) -> Ret
[src]impl Ord for CpuidResult
[src]
impl Ord for CpuidResult
[src]pub fn cmp(&self, other: &CpuidResult) -> Ordering
[src]
impl<A, B, C, D, E> Ord for (A, B, C, D, E) where
C: Ord,
A: Ord,
E: Ord + ?Sized,
D: Ord,
B: Ord,
[src]
impl<A, B, C, D, E> Ord for (A, B, C, D, E) where
C: Ord,
A: Ord,
E: Ord + ?Sized,
D: Ord,
B: Ord,
[src]impl Ord for NonZeroUsize
[src]
impl Ord for NonZeroUsize
[src]pub fn cmp(&self, other: &NonZeroUsize) -> Ordering
[src]
impl<Ret, A, B, C, D, E, F, G, H> Ord for unsafe extern "C" fn(A, B, C, D, E, F, G, H, ...) -> Ret
[src]
impl<Ret, A, B, C, D, E, F, G, H> Ord for unsafe extern "C" fn(A, B, C, D, E, F, G, H, ...) -> Ret
[src]impl<Ret, A, B, C, D, E, F, G, H, I, J, K> Ord for unsafe extern "C" fn(A, B, C, D, E, F, G, H, I, J, K, ...) -> Ret
[src]
impl<Ret, A, B, C, D, E, F, G, H, I, J, K> Ord for unsafe extern "C" fn(A, B, C, D, E, F, G, H, I, J, K, ...) -> Ret
[src]impl<A, B, C, D, E, F, G, H> Ord for (A, B, C, D, E, F, G, H) where
C: Ord,
A: Ord,
F: Ord,
E: Ord,
D: Ord,
B: Ord,
G: Ord,
H: Ord + ?Sized,
[src]
impl<A, B, C, D, E, F, G, H> Ord for (A, B, C, D, E, F, G, H) where
C: Ord,
A: Ord,
F: Ord,
E: Ord,
D: Ord,
B: Ord,
G: Ord,
H: Ord + ?Sized,
[src]impl<Ret, A, B, C, D, E, F, G, H, I, J, K> Ord for unsafe fn(A, B, C, D, E, F, G, H, I, J, K) -> Ret
[src]
impl<Ret, A, B, C, D, E, F, G, H, I, J, K> Ord for unsafe fn(A, B, C, D, E, F, G, H, I, J, K) -> Ret
[src]impl<Ret, A, B, C, D, E, F, G, H, I, J, K, L> Ord for unsafe fn(A, B, C, D, E, F, G, H, I, J, K, L) -> Ret
[src]
impl<Ret, A, B, C, D, E, F, G, H, I, J, K, L> Ord for unsafe fn(A, B, C, D, E, F, G, H, I, J, K, L) -> Ret
[src]impl<Ret, A, B, C, D, E, F, G, H, I, J, K> Ord for unsafe extern "C" fn(A, B, C, D, E, F, G, H, I, J, K) -> Ret
[src]
impl<Ret, A, B, C, D, E, F, G, H, I, J, K> Ord for unsafe extern "C" fn(A, B, C, D, E, F, G, H, I, J, K) -> Ret
[src]impl<A, B, C, D, E, F, G, H, I> Ord for (A, B, C, D, E, F, G, H, I) where
C: Ord,
A: Ord,
F: Ord,
E: Ord,
D: Ord,
I: Ord + ?Sized,
B: Ord,
G: Ord,
H: Ord,
[src]
impl<A, B, C, D, E, F, G, H, I> Ord for (A, B, C, D, E, F, G, H, I) where
C: Ord,
A: Ord,
F: Ord,
E: Ord,
D: Ord,
I: Ord + ?Sized,
B: Ord,
G: Ord,
H: Ord,
[src]impl<A, B, C, D, E, F, G, H, I, J> Ord for (A, B, C, D, E, F, G, H, I, J) where
C: Ord,
A: Ord,
F: Ord,
E: Ord,
D: Ord,
I: Ord,
B: Ord,
G: Ord,
H: Ord,
J: Ord + ?Sized,
[src]
impl<A, B, C, D, E, F, G, H, I, J> Ord for (A, B, C, D, E, F, G, H, I, J) where
C: Ord,
A: Ord,
F: Ord,
E: Ord,
D: Ord,
I: Ord,
B: Ord,
G: Ord,
H: Ord,
J: Ord + ?Sized,
[src]impl Ord for NonZeroI32
[src]
impl Ord for NonZeroI32
[src]pub fn cmp(&self, other: &NonZeroI32) -> Ordering
[src]
impl Ord for NonZeroU32
[src]
impl Ord for NonZeroU32
[src]pub fn cmp(&self, other: &NonZeroU32) -> Ordering
[src]
impl<A, B, C, D, E, F> Ord for (A, B, C, D, E, F) where
C: Ord,
A: Ord,
F: Ord + ?Sized,
E: Ord,
D: Ord,
B: Ord,
[src]
impl<A, B, C, D, E, F> Ord for (A, B, C, D, E, F) where
C: Ord,
A: Ord,
F: Ord + ?Sized,
E: Ord,
D: Ord,
B: Ord,
[src]impl<Ret, A, B, C, D, E, F, G, H, I, J> Ord for extern "C" fn(A, B, C, D, E, F, G, H, I, J) -> Ret
[src]
impl<Ret, A, B, C, D, E, F, G, H, I, J> Ord for extern "C" fn(A, B, C, D, E, F, G, H, I, J) -> Ret
[src]impl<T, const N: usize> Ord for [T; N] where
T: Ord,
[src]
impl<T, const N: usize> Ord for [T; N] where
T: Ord,
[src]Implements comparison of arrays lexicographically.
impl Ord for NonZeroU64
[src]
impl Ord for NonZeroU64
[src]pub fn cmp(&self, other: &NonZeroU64) -> Ordering
[src]
impl<Ret, A, B, C, D, E, F, G, H, I, J> Ord for unsafe extern "C" fn(A, B, C, D, E, F, G, H, I, J) -> Ret
[src]
impl<Ret, A, B, C, D, E, F, G, H, I, J> Ord for unsafe extern "C" fn(A, B, C, D, E, F, G, H, I, J) -> Ret
[src]impl<Ret, A, B, C, D, E, F, G, H, I, J, K, L> Ord for unsafe extern "C" fn(A, B, C, D, E, F, G, H, I, J, K, L, ...) -> Ret
[src]
impl<Ret, A, B, C, D, E, F, G, H, I, J, K, L> Ord for unsafe extern "C" fn(A, B, C, D, E, F, G, H, I, J, K, L, ...) -> Ret
[src]impl<Ret, A, B, C, D, E, F, G, H, I, J, K> Ord for extern "C" fn(A, B, C, D, E, F, G, H, I, J, K, ...) -> Ret
[src]
impl<Ret, A, B, C, D, E, F, G, H, I, J, K> Ord for extern "C" fn(A, B, C, D, E, F, G, H, I, J, K, ...) -> Ret
[src]impl<Ret, A, B, C, D, E, F, G, H, I, J> Ord for extern "C" fn(A, B, C, D, E, F, G, H, I, J, ...) -> Ret
[src]
impl<Ret, A, B, C, D, E, F, G, H, I, J> Ord for extern "C" fn(A, B, C, D, E, F, G, H, I, J, ...) -> Ret
[src]impl Ord for NonZeroI128
[src]
impl Ord for NonZeroI128
[src]pub fn cmp(&self, other: &NonZeroI128) -> Ordering
[src]
impl<Ret, A, B, C, D, E, F, G, H, I, J, K, L> Ord for extern "C" fn(A, B, C, D, E, F, G, H, I, J, K, L, ...) -> Ret
[src]
impl<Ret, A, B, C, D, E, F, G, H, I, J, K, L> Ord for extern "C" fn(A, B, C, D, E, F, G, H, I, J, K, L, ...) -> Ret
[src]impl Ord for NonZeroI64
[src]
impl Ord for NonZeroI64
[src]pub fn cmp(&self, other: &NonZeroI64) -> Ordering
[src]
impl<Ret, A, B, C, D, E, F, G, H, I, J, K, L> Ord for extern "C" fn(A, B, C, D, E, F, G, H, I, J, K, L) -> Ret
[src]
impl<Ret, A, B, C, D, E, F, G, H, I, J, K, L> Ord for extern "C" fn(A, B, C, D, E, F, G, H, I, J, K, L) -> Ret
[src]impl Ord for NonZeroIsize
[src]
impl Ord for NonZeroIsize
[src]pub fn cmp(&self, other: &NonZeroIsize) -> Ordering
[src]
impl<Ret, A, B, C, D, E, F, G, H, I> Ord for unsafe extern "C" fn(A, B, C, D, E, F, G, H, I, ...) -> Ret
[src]
impl<Ret, A, B, C, D, E, F, G, H, I> Ord for unsafe extern "C" fn(A, B, C, D, E, F, G, H, I, ...) -> Ret
[src]impl<T> Ord for LinkedList<T> where
T: Ord,
[src]
impl<T> Ord for LinkedList<T> where
T: Ord,
[src]pub fn cmp(&self, other: &LinkedList<T>) -> Ordering
[src]
impl Ord for ArchivedSocketAddrV6
[src]
impl Ord for ArchivedSocketAddrV6
[src]pub fn cmp(&self, other: &ArchivedSocketAddrV6) -> Ordering
[src]
impl Ord for ArchivedString
[src]
impl Ord for ArchivedString
[src]pub fn cmp(&self, other: &ArchivedString) -> Ordering
[src]
impl Ord for ArchivedIpv6Addr
[src]
impl Ord for ArchivedIpv6Addr
[src]pub fn cmp(&self, other: &ArchivedIpv6Addr) -> Ordering
[src]
impl Ord for ArchivedIpAddr
[src]
impl Ord for ArchivedIpAddr
[src]pub fn cmp(&self, other: &ArchivedIpAddr) -> Ordering
[src]
impl Ord for ArchivedSocketAddr
[src]
impl Ord for ArchivedSocketAddr
[src]pub fn cmp(&self, other: &ArchivedSocketAddr) -> Ordering
[src]
impl Ord for ArchivedDuration
[src]
impl Ord for ArchivedDuration
[src]pub fn cmp(&self, other: &ArchivedDuration) -> Ordering
[src]
impl<T> Ord for ArchivedOption<T> where
T: Ord,
[src]
impl<T> Ord for ArchivedOption<T> where
T: Ord,
[src]pub fn cmp(&self, other: &ArchivedOption<T>) -> Ordering
[src]
impl Ord for ArchivedIpv4Addr
[src]
impl Ord for ArchivedIpv4Addr
[src]pub fn cmp(&self, other: &ArchivedIpv4Addr) -> Ordering
[src]
impl Ord for ArchivedSocketAddrV4
[src]
impl Ord for ArchivedSocketAddrV4
[src]pub fn cmp(&self, other: &ArchivedSocketAddrV4) -> Ordering
[src]
Implementors
impl Ord for ExportIndex
[src]
impl Ord for ExportIndex
[src]fn cmp(&self, other: &ExportIndex) -> Ordering
[src]
impl Ord for ImportIndex
[src]
impl Ord for ImportIndex
[src]fn cmp(&self, other: &ImportIndex) -> Ordering
[src]
impl Ord for Infallible
1.34.0[src]
impl Ord for Infallible
1.34.0[src]pub fn cmp(&self, _other: &Infallible) -> Ordering
[src]
impl Ord for CustomSectionIndex
[src]
impl Ord for CustomSectionIndex
[src]fn cmp(&self, other: &CustomSectionIndex) -> Ordering
[src]
impl Ord for FunctionIndex
[src]
impl Ord for FunctionIndex
[src]fn cmp(&self, other: &FunctionIndex) -> Ordering
[src]
impl Ord for GlobalIndex
[src]
impl Ord for GlobalIndex
[src]fn cmp(&self, other: &GlobalIndex) -> Ordering
[src]
impl Ord for LocalFunctionIndex
[src]
impl Ord for LocalFunctionIndex
[src]fn cmp(&self, other: &LocalFunctionIndex) -> Ordering
[src]
impl Ord for LocalGlobalIndex
[src]
impl Ord for LocalGlobalIndex
[src]fn cmp(&self, other: &LocalGlobalIndex) -> Ordering
[src]
impl Ord for LocalMemoryIndex
[src]
impl Ord for LocalMemoryIndex
[src]fn cmp(&self, other: &LocalMemoryIndex) -> Ordering
[src]
impl Ord for LocalTableIndex
[src]
impl Ord for LocalTableIndex
[src]fn cmp(&self, other: &LocalTableIndex) -> Ordering
[src]
impl Ord for MemoryIndex
[src]
impl Ord for MemoryIndex
[src]fn cmp(&self, other: &MemoryIndex) -> Ordering
[src]
impl Ord for SignatureIndex
[src]
impl Ord for SignatureIndex
[src]fn cmp(&self, other: &SignatureIndex) -> Ordering
[src]
impl Ord for TableIndex
[src]
impl Ord for TableIndex
[src]fn cmp(&self, other: &TableIndex) -> Ordering
[src]
impl Ord for PhantomPinned
1.33.0[src]
impl Ord for PhantomPinned
1.33.0[src]pub fn cmp(&self, other: &PhantomPinned) -> Ordering
[src]
impl<Dyn> Ord for wasmer_types::lib::std::ptr::DynMetadata<Dyn> where
Dyn: ?Sized,
[src]
impl<Dyn> Ord for wasmer_types::lib::std::ptr::DynMetadata<Dyn> where
Dyn: ?Sized,
[src]pub fn cmp(&self, other: &DynMetadata<Dyn>) -> Ordering
[src]
impl<T> Ord for PhantomData<T> where
T: ?Sized,
[src]
impl<T> Ord for PhantomData<T> where
T: ?Sized,
[src]pub fn cmp(&self, _other: &PhantomData<T>) -> Ordering
[src]
impl<T> Ord for ManuallyDrop<T> where
T: Ord + ?Sized,
1.20.0[src]
impl<T> Ord for ManuallyDrop<T> where
T: Ord + ?Sized,
1.20.0[src]pub fn cmp(&self, other: &ManuallyDrop<T>) -> Ordering
[src]
impl<T, A> Ord for Vec<T, A> where
T: Ord,
A: Allocator,
[src]
impl<T, A> Ord for Vec<T, A> where
T: Ord,
A: Allocator,
[src]Implements ordering of vectors, lexicographically.
impl<T: Ord + ReservedValue> Ord for PackedOption<T>
[src]
impl<T: Ord + ReservedValue> Ord for PackedOption<T>
[src]fn cmp(&self, other: &PackedOption<T>) -> Ordering
[src]
impl<Y, R> Ord for GeneratorState<Y, R> where
R: Ord,
Y: Ord,
[src]
impl<Y, R> Ord for GeneratorState<Y, R> where
R: Ord,
Y: Ord,
[src]