pub trait PartialOrd<Rhs = Self>: PartialEq<Rhs>where
Rhs: ?Sized,{
// Required method
fn partial_cmp(&self, other: &Rhs) -> Option<Ordering>;
// Provided methods
fn lt(&self, other: &Rhs) -> bool { ... }
fn le(&self, other: &Rhs) -> bool { ... }
fn gt(&self, other: &Rhs) -> bool { ... }
fn ge(&self, other: &Rhs) -> bool { ... }
}Expand description
Trait for types that form a partial order.
The lt, le, gt, and ge methods of this trait can be called using the <, <=, >, and
>= operators, respectively.
This trait should only contain the comparison logic for a type if one plans on only
implementing PartialOrd but not Ord. Otherwise the comparison logic should be in Ord
and this trait implemented with Some(self.cmp(other)).
The methods of this trait must be consistent with each other and with those of PartialEq.
The following conditions must hold:
a == bif and only ifpartial_cmp(a, b) == Some(Equal).a < bif and only ifpartial_cmp(a, b) == Some(Less)a > bif and only ifpartial_cmp(a, b) == Some(Greater)a <= bif and only ifa < b || a == ba >= bif and only ifa > b || a == ba != bif and only if!(a == b).
Conditions 2–5 above are ensured by the default implementation. Condition 6 is already ensured
by PartialEq.
If Ord is also implemented for Self and Rhs, it must also be consistent with
partial_cmp (see the documentation of that trait for the exact requirements). It’s easy to
accidentally make them disagree by deriving some of the traits and manually implementing others.
The comparison relations must satisfy the following conditions (for all a, b, c of type
A, B, C):
- Transitivity: if
A: PartialOrd<B>andB: PartialOrd<C>andA: PartialOrd<C>, thena < bandb < cimpliesa < c. The same must hold for both==and>. This must also work for longer chains, such as whenA: PartialOrd<B>,B: PartialOrd<C>,C: PartialOrd<D>, andA: PartialOrd<D>all exist. - Duality: if
A: PartialOrd<B>andB: PartialOrd<A>, thena < bif and only ifb > a.
Note that the B: PartialOrd<A> (dual) and A: PartialOrd<C> (transitive) impls are not forced
to exist, but these requirements apply whenever they do exist.
Violating these requirements is a logic error. The behavior resulting from a logic error is not
specified, but users of the trait must ensure that such logic errors do not result in
undefined behavior. This means that unsafe code must not rely on the correctness of these
methods.
§Cross-crate considerations
Upholding the requirements stated above can become tricky when one crate implements PartialOrd
for a type of another crate (i.e., to allow comparing one of its own types with a type from the
standard library). The recommendation is to never implement this trait for a foreign type. In
other words, such a crate should do impl PartialOrd<ForeignType> for LocalType, but it should
not do impl PartialOrd<LocalType> for ForeignType.
This avoids the problem of transitive chains that criss-cross crate boundaries: for all local
types T, you may assume that no other crate will add impls that allow comparing T < U. In
other words, if other crates add impls that allow building longer transitive chains U1 < ... < T < V1 < ..., then all the types that appear to the right of T must be types that the crate
defining T already knows about. This rules out transitive chains where downstream crates can
add new impls that “stitch together” comparisons of foreign types in ways that violate
transitivity.
Not having such foreign impls also avoids forward compatibility issues where one crate adding
more PartialOrd implementations can cause build failures in downstream crates.
§Corollaries
The following corollaries follow from the above requirements:
- irreflexivity of
<and>:!(a < a),!(a > a) - transitivity of
>: ifa > bandb > cthena > c - duality of
partial_cmp:partial_cmp(a, b) == partial_cmp(b, a).map(Ordering::reverse)
§Strict and non-strict partial orders
The < and > operators behave according to a strict partial order. However, <= and >=
do not behave according to a non-strict partial order. That is because mathematically, a
non-strict partial order would require reflexivity, i.e. a <= a would need to be true for
every a. This isn’t always the case for types that implement PartialOrd, for example:
let a = f64::NAN;
assert_eq!(a <= a, false);§Derivable
This trait can be used with #[derive].
When derived on structs, it will produce a
lexicographic ordering based on the
top-to-bottom declaration order of the struct’s members.
When derived on enums, variants are primarily ordered by their discriminants. Secondarily,
they are ordered by their fields. By default, the discriminant is smallest for variants at the
top, and largest for variants at the bottom. Here’s an example:
#[derive(PartialEq, PartialOrd)]
enum E {
Top,
Bottom,
}
assert!(E::Top < E::Bottom);However, manually setting the discriminants can override this default behavior:
#[derive(PartialEq, PartialOrd)]
enum E {
Top = 2,
Bottom = 1,
}
assert!(E::Bottom < E::Top);§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.
If your type is Ord, you can implement partial_cmp by using cmp:
use std::cmp::Ordering;
struct Person {
id: u32,
name: String,
height: u32,
}
impl PartialOrd for Person {
fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
Some(self.cmp(other))
}
}
impl Ord for Person {
fn cmp(&self, other: &Self) -> Ordering {
self.height.cmp(&other.height)
}
}
impl PartialEq for Person {
fn eq(&self, other: &Self) -> bool {
self.height == other.height
}
}
impl Eq for Person {}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: &Self) -> Option<Ordering> {
self.height.partial_cmp(&other.height)
}
}
impl PartialEq for Person {
fn eq(&self, other: &Self) -> bool {
self.height == other.height
}
}§Examples of incorrect PartialOrd implementations
use std::cmp::Ordering;
#[derive(PartialEq, Debug)]
struct Character {
health: u32,
experience: u32,
}
impl PartialOrd for Character {
fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
Some(self.health.cmp(&other.health))
}
}
let a = Character {
health: 10,
experience: 5,
};
let b = Character {
health: 10,
experience: 77,
};
// Mistake: `PartialEq` and `PartialOrd` disagree with each other.
assert_eq!(a.partial_cmp(&b).unwrap(), Ordering::Equal); // a == b according to `PartialOrd`.
assert_ne!(a, b); // a != b according to `PartialEq`.§Examples
let x: u32 = 0;
let y: u32 = 1;
assert_eq!(x < y, true);
assert_eq!(x.lt(&y), true);Required Methods§
1.0.0 · Sourcefn partial_cmp(&self, other: &Rhs) -> Option<Ordering>
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));When comparison is impossible:
let result = f64::NAN.partial_cmp(&1.0);
assert_eq!(result, None);Provided Methods§
1.0.0 · Sourcefn lt(&self, other: &Rhs) -> bool
fn lt(&self, other: &Rhs) -> bool
Tests less than (for self and other) and is used by the < operator.
§Examples
assert_eq!(1.0 < 1.0, false);
assert_eq!(1.0 < 2.0, true);
assert_eq!(2.0 < 1.0, false);1.0.0 · Sourcefn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
Tests less than or equal to (for self and other) and is used by the
<= operator.
§Examples
assert_eq!(1.0 <= 1.0, true);
assert_eq!(1.0 <= 2.0, true);
assert_eq!(2.0 <= 1.0, false);Implementors§
impl PartialOrd for CallContext
impl PartialOrd for subsoil::keyring::ed25519::Keyring
impl PartialOrd for subsoil::keyring::sr25519::Keyring
impl PartialOrd for MultiSigner
impl PartialOrd for ChildInfo
impl PartialOrd for Infallible
impl PartialOrd for Ordering
impl PartialOrd for AsciiChar
impl PartialOrd for IpAddr
impl PartialOrd for SocketAddr
impl PartialOrd for ErrorKind
impl PartialOrd for Language
impl PartialOrd for byteorder::BigEndian
impl PartialOrd for byteorder::LittleEndian
impl PartialOrd for const_oid::error::Error
impl PartialOrd for SectionId
impl PartialOrd for ColumnType
impl PartialOrd for log::Level
impl PartialOrd for log::LevelFilter
impl PartialOrd for Locale
impl PartialOrd for regex_syntax::utf8::Utf8Sequence
impl PartialOrd for regex_syntax::utf8::Utf8Sequence
impl PartialOrd for MetaForm
impl PartialOrd for PortableForm
impl PartialOrd for TypeDefPrimitive
impl PartialOrd for All
impl PartialOrd for SignOnly
impl PartialOrd for VerifyOnly
impl PartialOrd for ElligatorSwiftParty
impl PartialOrd for secp256k1::Error
impl PartialOrd for Parity
impl PartialOrd for TokenRegistry
impl PartialOrd for Month
impl PartialOrd for zerocopy::byteorder::BigEndian
impl PartialOrd for zerocopy::byteorder::LittleEndian
impl PartialOrd for bool
impl PartialOrd for char
impl PartialOrd for f16
impl PartialOrd for f32
impl PartialOrd for f64
impl PartialOrd for f128
impl PartialOrd for i8
impl PartialOrd for i16
impl PartialOrd for i32
impl PartialOrd for i64
impl PartialOrd for i128
impl PartialOrd for isize
impl PartialOrd for !
impl PartialOrd for str
Implements comparison operations on strings.
Strings are compared lexicographically by their byte values. This compares 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. Comparing strings according to
culturally-accepted standards requires locale-specific data that is outside the scope of
the str type.
impl PartialOrd for u8
impl PartialOrd for u16
impl PartialOrd for u32
impl PartialOrd for u64
impl PartialOrd for u128
impl PartialOrd for ()
impl PartialOrd for usize
impl PartialOrd for subsoil::application_crypto::ecdsa::AppPublic
impl PartialOrd for subsoil::application_crypto::ed25519::AppPublic
impl PartialOrd for subsoil::application_crypto::sr25519::AppPublic
impl PartialOrd for BigUint
impl PartialOrd for FixedI64
impl PartialOrd for FixedI128
impl PartialOrd for FixedU64
impl PartialOrd for FixedU128
impl PartialOrd for PerU16
impl PartialOrd for Perbill
impl PartialOrd for Percent
impl PartialOrd for Permill
impl PartialOrd for Perquintill
impl PartialOrd for Rational128
impl PartialOrd for RationalInfinite
impl PartialOrd for subsoil::consensus::beefy::ecdsa_crypto::Public
impl PartialOrd for Payload
impl PartialOrd for SlotDuration
impl PartialOrd for AccountId32
impl PartialOrd for CryptoTypeId
impl PartialOrd for KeyTypeId
impl PartialOrd for Capabilities
impl PartialOrd for subsoil::core::offchain::Duration
impl PartialOrd for HttpRequestId
impl PartialOrd for subsoil::core::offchain::Timestamp
impl PartialOrd for subsoil::core::Bytes
impl PartialOrd for H160
impl PartialOrd for H256
impl PartialOrd for H512
impl PartialOrd for OpaquePeerId
impl PartialOrd for U256
impl PartialOrd for U512
impl PartialOrd for ElectionScore
impl PartialOrd for UintAuthorityId
impl PartialOrd for OffenceSeverity
impl PartialOrd for ChildTrieParentKeyId
impl PartialOrd for PrefixedStorageKey
impl PartialOrd for StorageData
impl PartialOrd for StorageKey
impl PartialOrd for TrackedStorageKey
impl PartialOrd for subsoil::tracing::Level
impl PartialOrd for TypeId
impl PartialOrd for subsoil::std::fmt::Error
impl PartialOrd for PhantomPinned
impl PartialOrd for Alignment
impl PartialOrd for subsoil::std::time::Duration
impl PartialOrd for ByteString
impl PartialOrd for CString
impl PartialOrd for String
impl PartialOrd for ByteStr
impl PartialOrd for CpuidResult
impl PartialOrd for CStr
impl PartialOrd for Ipv4Addr
impl PartialOrd for Ipv6Addr
impl PartialOrd for SocketAddrV4
impl PartialOrd for SocketAddrV6
impl PartialOrd for Location<'_>
impl PartialOrd for OsStr
impl PartialOrd for OsString
impl PartialOrd for std::path::Path
impl PartialOrd for PathBuf
impl PartialOrd for Instant
impl PartialOrd for SystemTime
impl PartialOrd for aho_corasick::util::primitives::PatternID
impl PartialOrd for aho_corasick::util::primitives::StateID
impl PartialOrd for Mnemonic
impl PartialOrd for bitcoin_hashes::hash160::Hash
impl PartialOrd for bitcoin_hashes::ripemd160::Hash
impl PartialOrd for bitcoin_hashes::sha1::Hash
impl PartialOrd for bitcoin_hashes::sha256::Hash
impl PartialOrd for Midstate
impl PartialOrd for bitcoin_hashes::sha256d::Hash
impl PartialOrd for bitcoin_hashes::sha384::Hash
impl PartialOrd for bitcoin_hashes::sha512::Hash
impl PartialOrd for bitcoin_hashes::sha512_256::Hash
impl PartialOrd for bitcoin_hashes::siphash24::Hash
impl PartialOrd for bytes::bytes::Bytes
impl PartialOrd for BytesMut
impl PartialOrd for ObjectIdentifier
impl PartialOrd for VerificationKeyBytes
impl PartialOrd for Register
impl PartialOrd for DwAccess
impl PartialOrd for DwAddr
impl PartialOrd for DwAt
impl PartialOrd for DwAte
impl PartialOrd for DwCc
impl PartialOrd for DwCfa
impl PartialOrd for DwChildren
impl PartialOrd for DwDefaulted
impl PartialOrd for DwDs
impl PartialOrd for DwDsc
impl PartialOrd for DwEhPe
impl PartialOrd for DwEnd
impl PartialOrd for DwForm
impl PartialOrd for DwId
impl PartialOrd for DwIdx
impl PartialOrd for DwInl
impl PartialOrd for DwLang
impl PartialOrd for DwLle
impl PartialOrd for DwLnct
impl PartialOrd for DwLne
impl PartialOrd for DwLns
impl PartialOrd for DwMacinfo
impl PartialOrd for DwMacro
impl PartialOrd for DwOp
impl PartialOrd for DwOrd
impl PartialOrd for DwRle
impl PartialOrd for DwSect
impl PartialOrd for DwSectV2
impl PartialOrd for DwTag
impl PartialOrd for DwUt
impl PartialOrd for DwVirtuality
impl PartialOrd for DwVis
impl PartialOrd for ArangeEntry
impl PartialOrd for Range
impl PartialOrd for libsecp256k1_core::field::Field
impl PartialOrd for H128
impl PartialOrd for H384
impl PartialOrd for H768
impl PartialOrd for primitive_types::U128
impl PartialOrd for LazyStateID
impl PartialOrd for Unit
impl PartialOrd for NonMaxUsize
impl PartialOrd for regex_automata::util::primitives::PatternID
impl PartialOrd for SmallIndex
impl PartialOrd for regex_automata::util::primitives::StateID
impl PartialOrd for regex_syntax::ast::Position
impl PartialOrd for regex_syntax::ast::Position
impl PartialOrd for regex_syntax::ast::Span
impl PartialOrd for regex_syntax::ast::Span
impl PartialOrd for regex_syntax::hir::literal::Literal
impl PartialOrd for regex_syntax::hir::literal::Literal
impl PartialOrd for regex_syntax::hir::ClassBytesRange
impl PartialOrd for regex_syntax::hir::ClassBytesRange
impl PartialOrd for regex_syntax::hir::ClassUnicodeRange
impl PartialOrd for regex_syntax::hir::ClassUnicodeRange
impl PartialOrd for regex_syntax::utf8::Utf8Range
impl PartialOrd for regex_syntax::utf8::Utf8Range
impl PartialOrd for MetaType
impl PartialOrd for schnorrkel::keys::PublicKey
impl PartialOrd for RistrettoBoth
impl PartialOrd for VRFInOut
impl PartialOrd for VRFPreOut
impl PartialOrd for secp256k1_sys::recovery::RecoverableSignature
secp256k1_fuzz only.impl PartialOrd for secp256k1_sys::ElligatorSwift
impl PartialOrd for secp256k1_sys::Keypair
secp256k1_fuzz only.impl PartialOrd for secp256k1_sys::PublicKey
secp256k1_fuzz only.impl PartialOrd for secp256k1_sys::Signature
secp256k1_fuzz only.impl PartialOrd for secp256k1_sys::XOnlyPublicKey
secp256k1_fuzz only.impl PartialOrd for secp256k1::ecdsa::recovery::RecoverableSignature
impl PartialOrd for RecoveryId
impl PartialOrd for SerializedSignature
impl PartialOrd for secp256k1::ecdsa::Signature
impl PartialOrd for secp256k1::ellswift::ElligatorSwift
impl PartialOrd for InvalidParityValue
impl PartialOrd for secp256k1::key::Keypair
impl PartialOrd for secp256k1::key::PublicKey
impl PartialOrd for secp256k1::key::XOnlyPublicKey
impl PartialOrd for Scalar
impl PartialOrd for secp256k1::schnorr::Signature
impl PartialOrd for Message
impl PartialOrd for Token
impl PartialOrd for TokenAmount
impl PartialOrd for Date
impl PartialOrd for time::duration::Duration
impl PartialOrd for OffsetDateTime
impl PartialOrd for PrimitiveDateTime
impl PartialOrd for Time
impl PartialOrd for UtcDateTime
impl PartialOrd for UtcOffset
impl PartialOrd for tracing_core::metadata::LevelFilter
impl PartialOrd for Directive
impl PartialOrd for FmtSpan
impl PartialOrd for trie_db::Bytes
impl PartialOrd for ATerm
impl PartialOrd for B0
impl PartialOrd for B1
impl PartialOrd for Z0
impl PartialOrd for Equal
impl PartialOrd for Greater
impl PartialOrd for Less
impl PartialOrd for UTerm
impl PartialOrd<&ByteStr> for Cow<'_, str>
impl PartialOrd<&ByteStr> for Cow<'_, ByteStr>
impl PartialOrd<&ByteStr> for Cow<'_, [u8]>
impl PartialOrd<&ByteStr> for ByteString
impl PartialOrd<&OsStr> for Cow<'_, OsStr>
impl PartialOrd<&OsStr> for Cow<'_, Path>
impl PartialOrd<&OsStr> for OsString
impl PartialOrd<&OsStr> for std::path::Path
impl PartialOrd<&OsStr> for PathBuf
impl PartialOrd<&Path> for Cow<'_, OsStr>
impl PartialOrd<&Path> for Cow<'_, Path>
impl PartialOrd<&Path> for OsStr
impl PartialOrd<&Path> for OsString
impl PartialOrd<&Path> for PathBuf
impl PartialOrd<Cow<'_, str>> for &ByteStr
impl PartialOrd<Cow<'_, str>> for ByteString
impl PartialOrd<Cow<'_, ByteStr>> for &ByteStr
impl PartialOrd<Cow<'_, ByteStr>> for ByteString
impl PartialOrd<Cow<'_, OsStr>> for &OsStr
impl PartialOrd<Cow<'_, OsStr>> for &std::path::Path
impl PartialOrd<Cow<'_, OsStr>> for OsStr
impl PartialOrd<Cow<'_, OsStr>> for OsString
impl PartialOrd<Cow<'_, OsStr>> for std::path::Path
impl PartialOrd<Cow<'_, OsStr>> for PathBuf
impl PartialOrd<Cow<'_, Path>> for &OsStr
impl PartialOrd<Cow<'_, Path>> for &std::path::Path
impl PartialOrd<Cow<'_, Path>> for OsStr
impl PartialOrd<Cow<'_, Path>> for OsString
impl PartialOrd<Cow<'_, Path>> for std::path::Path
impl PartialOrd<Cow<'_, Path>> for PathBuf
impl PartialOrd<Cow<'_, [u8]>> for &ByteStr
impl PartialOrd<Cow<'_, [u8]>> for ByteString
impl PartialOrd<IpAddr> for Ipv4Addr
impl PartialOrd<IpAddr> for Ipv6Addr
impl PartialOrd<Level> for log::LevelFilter
impl PartialOrd<LevelFilter> for log::Level
impl PartialOrd<str> for OsStr
impl PartialOrd<str> for OsString
impl PartialOrd<str> for bytes::bytes::Bytes
impl PartialOrd<str> for BytesMut
impl PartialOrd<Level> for tracing_core::metadata::LevelFilter
impl PartialOrd<Vec<u8>> for bytes::bytes::Bytes
impl PartialOrd<Vec<u8>> for BytesMut
impl PartialOrd<Duration> for time::duration::Duration
impl PartialOrd<ByteString> for &ByteStr
impl PartialOrd<ByteString> for Cow<'_, str>
impl PartialOrd<ByteString> for Cow<'_, ByteStr>
impl PartialOrd<ByteString> for Cow<'_, [u8]>
impl PartialOrd<ByteString> for ByteStr
impl PartialOrd<String> for bytes::bytes::Bytes
impl PartialOrd<String> for BytesMut
impl PartialOrd<ByteStr> for ByteString
impl PartialOrd<Ipv4Addr> for IpAddr
impl PartialOrd<Ipv6Addr> for IpAddr
impl PartialOrd<OsStr> for &std::path::Path
impl PartialOrd<OsStr> for Cow<'_, OsStr>
impl PartialOrd<OsStr> for Cow<'_, Path>
impl PartialOrd<OsStr> for OsString
impl PartialOrd<OsStr> for std::path::Path
impl PartialOrd<OsStr> for PathBuf
impl PartialOrd<OsString> for &OsStr
impl PartialOrd<OsString> for &std::path::Path
impl PartialOrd<OsString> for Cow<'_, OsStr>
impl PartialOrd<OsString> for Cow<'_, Path>
impl PartialOrd<OsString> for OsStr
impl PartialOrd<OsString> for std::path::Path
impl PartialOrd<OsString> for PathBuf
impl PartialOrd<Path> for &OsStr
impl PartialOrd<Path> for Cow<'_, OsStr>
impl PartialOrd<Path> for Cow<'_, Path>
impl PartialOrd<Path> for OsStr
impl PartialOrd<Path> for OsString
impl PartialOrd<Path> for PathBuf
impl PartialOrd<PathBuf> for &OsStr
impl PartialOrd<PathBuf> for &std::path::Path
impl PartialOrd<PathBuf> for Cow<'_, OsStr>
impl PartialOrd<PathBuf> for Cow<'_, Path>
impl PartialOrd<PathBuf> for OsStr
impl PartialOrd<PathBuf> for OsString
impl PartialOrd<PathBuf> for std::path::Path
impl PartialOrd<SystemTime> for OffsetDateTime
impl PartialOrd<SystemTime> for UtcDateTime
impl PartialOrd<Bytes> for &str
impl PartialOrd<Bytes> for &[u8]
impl PartialOrd<Bytes> for str
impl PartialOrd<Bytes> for subsoil::std::prelude::Vec<u8>
impl PartialOrd<Bytes> for String
impl PartialOrd<Bytes> for [u8]
impl PartialOrd<BytesMut> for &str
impl PartialOrd<BytesMut> for &[u8]
impl PartialOrd<BytesMut> for str
impl PartialOrd<BytesMut> for subsoil::std::prelude::Vec<u8>
impl PartialOrd<BytesMut> for String
impl PartialOrd<BytesMut> for [u8]
impl PartialOrd<SerializedSignature> for [u8]
impl PartialOrd<Duration> for subsoil::std::time::Duration
impl PartialOrd<OffsetDateTime> for SystemTime
impl PartialOrd<OffsetDateTime> for UtcDateTime
impl PartialOrd<UtcDateTime> for SystemTime
impl PartialOrd<UtcDateTime> for OffsetDateTime
impl PartialOrd<LevelFilter> for subsoil::tracing::Level
impl PartialOrd<[u8]> for bytes::bytes::Bytes
impl PartialOrd<[u8]> for BytesMut
impl PartialOrd<[u8]> for SerializedSignature
impl<'a> PartialOrd for OpaqueDigestItemId<'a>
impl<'a> PartialOrd for Component<'a>
impl<'a> PartialOrd for Prefix<'a>
impl<'a> PartialOrd for PhantomContravariantLifetime<'a>
impl<'a> PartialOrd for PhantomCovariantLifetime<'a>
impl<'a> PartialOrd for PhantomInvariantLifetime<'a>
impl<'a> PartialOrd for Components<'a>
impl<'a> PartialOrd for PrefixComponent<'a>
impl<'a> PartialOrd for Metadata<'a>
impl<'a> PartialOrd for MetadataBuilder<'a>
impl<'a> PartialOrd for DecimalStr<'a>
impl<'a> PartialOrd for InfinityStr<'a>
impl<'a> PartialOrd for MinusSignStr<'a>
impl<'a> PartialOrd for NanStr<'a>
impl<'a> PartialOrd for PlusSignStr<'a>
impl<'a> PartialOrd for SeparatorStr<'a>
impl<'a> PartialOrd for NibbleSlice<'a>
impl<'a, B> PartialOrd for Cow<'a, B>
impl<'a, T> PartialOrd for Symbol<'a, T>where
T: PartialOrd + 'a,
impl<'a, T> PartialOrd<&'a T> for bytes::bytes::Bytes
impl<'a, T> PartialOrd<&'a T> for BytesMut
impl<'a, T, BoundSelf, BoundRhs> PartialOrd<BoundedSlice<'a, T, BoundRhs>> for BoundedSlice<'a, T, BoundSelf>
impl<'a, T, BoundSelf, BoundRhs> PartialOrd<BoundedSlice<'a, T, BoundRhs>> for BoundedVec<T, BoundSelf>
impl<'a, T, BoundSelf, BoundRhs> PartialOrd<BoundedSlice<'a, T, BoundRhs>> for WeakBoundedVec<T, BoundSelf>
impl<'a, T, BoundSelf, BoundRhs> PartialOrd<BoundedVec<T, BoundRhs>> for BoundedSlice<'a, T, BoundSelf>
impl<'a, T, BoundSelf, BoundRhs> PartialOrd<WeakBoundedVec<T, BoundRhs>> for BoundedSlice<'a, T, BoundSelf>
impl<'buf> PartialOrd for AllPreallocated<'buf>
impl<'buf> PartialOrd for SignOnlyPreallocated<'buf>
impl<'buf> PartialOrd for VerifyOnlyPreallocated<'buf>
impl<'s, T> PartialOrd for SliceVec<'s, T>where
T: PartialOrd,
impl<A> PartialOrd for TinyVec<A>
impl<A> PartialOrd for SmallVec<A>
impl<A> PartialOrd for tinyvec::arrayvec::ArrayVec<A>
impl<A, B> PartialOrd<&B> for &A
impl<A, B> PartialOrd<&mut B> for &mut A
impl<AccountId: PartialOrd, Balance: PartialOrd + HasCompact> PartialOrd for Exposure<AccountId, Balance>
impl<AccountId: PartialOrd, Balance: PartialOrd + HasCompact> PartialOrd for ExposurePage<AccountId, Balance>
impl<AccountId: PartialOrd, Balance: PartialOrd + HasCompact> PartialOrd for IndividualExposure<AccountId, Balance>
impl<Balance: PartialOrd + HasCompact + MaxEncodedLen> PartialOrd for PagedExposureMetadata<Balance>
impl<Dyn> PartialOrd for DynMetadata<Dyn>where
Dyn: ?Sized,
impl<E> PartialOrd for I16Bytes<E>where
E: PartialOrd + Endian,
impl<E> PartialOrd for I32Bytes<E>where
E: PartialOrd + Endian,
impl<E> PartialOrd for I64Bytes<E>where
E: PartialOrd + Endian,
impl<E> PartialOrd for U16Bytes<E>where
E: PartialOrd + Endian,
impl<E> PartialOrd for U32Bytes<E>where
E: PartialOrd + Endian,
impl<E> PartialOrd for U64Bytes<E>where
E: PartialOrd + Endian,
impl<F> PartialOrd for Fwhere
F: FnPtr,
impl<K, V, A> PartialOrd for BTreeMap<K, V, A>
impl<K, V, S> PartialOrd for BoundedBTreeMap<K, V, S>
impl<L, R> PartialOrd for Either<L, R>where
L: PartialOrd,
R: PartialOrd,
impl<O> PartialOrd for F32<O>where
O: ByteOrder,
impl<O> PartialOrd for F64<O>where
O: ByteOrder,
impl<O> PartialOrd for I16<O>where
O: ByteOrder,
impl<O> PartialOrd for I32<O>where
O: ByteOrder,
impl<O> PartialOrd for I64<O>where
O: ByteOrder,
impl<O> PartialOrd for I128<O>where
O: ByteOrder,
impl<O> PartialOrd for Isize<O>where
O: ByteOrder,
impl<O> PartialOrd for U16<O>where
O: ByteOrder,
impl<O> PartialOrd for U32<O>where
O: ByteOrder,
impl<O> PartialOrd for U64<O>where
O: ByteOrder,
impl<O> PartialOrd for zerocopy::byteorder::U128<O>where
O: ByteOrder,
impl<O> PartialOrd for Usize<O>where
O: ByteOrder,
impl<O> PartialOrd<i16> for I16<O>where
O: ByteOrder,
impl<O> PartialOrd<i32> for I32<O>where
O: ByteOrder,
impl<O> PartialOrd<i64> for I64<O>where
O: ByteOrder,
impl<O> PartialOrd<i128> for I128<O>where
O: ByteOrder,
impl<O> PartialOrd<isize> for Isize<O>where
O: ByteOrder,
impl<O> PartialOrd<u16> for U16<O>where
O: ByteOrder,
impl<O> PartialOrd<u32> for U32<O>where
O: ByteOrder,
impl<O> PartialOrd<u64> for U64<O>where
O: ByteOrder,
impl<O> PartialOrd<u128> for zerocopy::byteorder::U128<O>where
O: ByteOrder,
impl<O> PartialOrd<usize> for Usize<O>where
O: ByteOrder,
impl<Ptr, Q> PartialOrd<Pin<Q>> for Pin<Ptr>
impl<T> PartialOrd for Option<T>where
T: PartialOrd,
impl<T> PartialOrd for Poll<T>where
T: PartialOrd,
impl<T> PartialOrd for UnitSectionOffset<T>where
T: PartialOrd,
impl<T> PartialOrd for TypeDef<T>where
T: PartialOrd + Form,
impl<T> PartialOrd for *const Twhere
T: ?Sized,
Pointer comparison is by address, as produced by the [<*const T>::addr](pointer::addr) method.
impl<T> PartialOrd for *mut Twhere
T: ?Sized,
Pointer comparison is by address, as produced by the <*mut T>::addr method.
impl<T> PartialOrd for [T]where
T: PartialOrd,
Implements comparison of slices lexicographically.
impl<T> PartialOrd for (T₁, T₂, …, Tₙ)where
T: PartialOrd,
This trait is implemented for tuples up to twelve items long.
impl<T> PartialOrd for Cell<T>where
T: PartialOrd + Copy,
impl<T> PartialOrd for RefCell<T>where
T: PartialOrd + ?Sized,
impl<T> PartialOrd for PhantomContravariant<T>where
T: ?Sized,
impl<T> PartialOrd for PhantomCovariant<T>where
T: ?Sized,
impl<T> PartialOrd for PhantomData<T>where
T: ?Sized,
impl<T> PartialOrd for PhantomInvariant<T>where
T: ?Sized,
impl<T> PartialOrd for ManuallyDrop<T>where
T: PartialOrd + ?Sized,
impl<T> PartialOrd for NonZero<T>where
T: ZeroablePrimitive + PartialOrd,
impl<T> PartialOrd for Saturating<T>where
T: PartialOrd,
impl<T> PartialOrd for Wrapping<T>where
T: PartialOrd,
impl<T> PartialOrd for Reverse<T>where
T: PartialOrd,
impl<T> PartialOrd for NonNull<T>where
T: ?Sized,
impl<T> PartialOrd for CapacityError<T>where
T: PartialOrd,
impl<T> PartialOrd for Hmac<T>where
T: PartialOrd + Hash,
impl<T> PartialOrd for bitcoin_hashes::sha256t::Hash<T>where
T: Tag,
impl<T> PartialOrd for AllowStdIo<T>where
T: PartialOrd,
impl<T> PartialOrd for DebugInfoOffset<T>where
T: PartialOrd,
impl<T> PartialOrd for DebugTypesOffset<T>where
T: PartialOrd,
impl<T> PartialOrd for UnitOffset<T>where
T: PartialOrd,
impl<T> PartialOrd for jam_codec::compact::Compact<T>where
T: PartialOrd,
impl<T> PartialOrd for parity_scale_codec::compact::Compact<T>where
T: PartialOrd,
impl<T> PartialOrd for UntrackedSymbol<T>where
T: PartialOrd,
impl<T> PartialOrd for TypeDefComposite<T>where
T: PartialOrd + Form,
impl<T> PartialOrd for scale_info::ty::fields::Field<T>
impl<T> PartialOrd for scale_info::ty::path::Path<T>
impl<T> PartialOrd for Type<T>
impl<T> PartialOrd for TypeDefArray<T>
impl<T> PartialOrd for TypeDefBitSequence<T>
impl<T> PartialOrd for TypeDefCompact<T>
impl<T> PartialOrd for TypeDefSequence<T>
impl<T> PartialOrd for TypeDefTuple<T>
impl<T> PartialOrd for TypeParameter<T>
impl<T> PartialOrd for TypeDefVariant<T>where
T: PartialOrd + Form,
impl<T> PartialOrd for Variant<T>
impl<T> PartialOrd for Unalign<T>where
T: Unaligned + PartialOrd,
impl<T, A1, A2> PartialOrd<Vec<T, A2>> for subsoil::std::prelude::Vec<T, A1>
Implements comparison of vectors, lexicographically.
impl<T, A> PartialOrd for BTreeSet<T, A>
impl<T, A> PartialOrd for VecDeque<T, A>where
T: PartialOrd,
A: Allocator,
impl<T, A> PartialOrd for subsoil::std::prelude::Box<T, A>
impl<T, A> PartialOrd for Rc<T, A>
impl<T, A> PartialOrd for UniqueRc<T, A>
impl<T, A> PartialOrd for Arc<T, A>
impl<T, A> PartialOrd for UniqueArc<T, A>
impl<T, A> PartialOrd for LinkedList<T, A>where
T: PartialOrd,
A: Allocator,
impl<T, A> PartialOrd for allocator_api2::stable::boxed::Box<T, A>
impl<T, A> PartialOrd for allocator_api2::stable::vec::Vec<T, A>where
T: PartialOrd,
A: Allocator,
Implements comparison of vectors, lexicographically.
impl<T, B> PartialOrd for Ref<B, T>
impl<T, BoundSelf, BoundRhs> PartialOrd<BoundedVec<T, BoundRhs>> for BoundedVec<T, BoundSelf>
impl<T, BoundSelf, BoundRhs> PartialOrd<BoundedVec<T, BoundRhs>> for WeakBoundedVec<T, BoundSelf>
impl<T, BoundSelf, BoundRhs> PartialOrd<WeakBoundedVec<T, BoundRhs>> for BoundedVec<T, BoundSelf>
impl<T, BoundSelf, BoundRhs> PartialOrd<WeakBoundedVec<T, BoundRhs>> for WeakBoundedVec<T, BoundSelf>
impl<T, E> PartialOrd for Result<T, E>where
T: PartialOrd,
E: PartialOrd,
impl<T, N> PartialOrd for GenericArray<T, N>where
T: PartialOrd,
N: ArrayLength<T>,
impl<T, S> PartialOrd for BoundedBTreeSet<T, S>
impl<T, U> PartialOrd<Exclusive<U>> for Exclusive<T>
impl<T, const CAP: usize> PartialOrd for arrayvec::arrayvec::ArrayVec<T, CAP>where
T: PartialOrd,
impl<T, const N: usize> PartialOrd for [T; N]where
T: PartialOrd,
Implements comparison of arrays lexicographically.
impl<T, const N: usize> PartialOrd for Mask<T, N>where
T: MaskElement + PartialOrd,
impl<T, const N: usize> PartialOrd for Simd<T, N>where
T: SimdElement + PartialOrd,
Lexicographic order. For the SIMD elementwise minimum and maximum, use simd_min and simd_max instead.