pub trait Ord: Eq + PartialOrd {
// Required method
fn cmp(&self, other: &Self) -> Ordering;
// Provided methods
fn max(self, other: Self) -> Self
where Self: Sized { ... }
fn min(self, other: Self) -> Self
where Self: Sized { ... }
fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized { ... }
}
Expand description
Trait for types that form a total order.
Implementations must be consistent with the PartialOrd
implementation, and ensure max
,
min
, and clamp
are consistent with cmp
:
partial_cmp(a, b) == Some(cmp(a, b))
.max(a, b) == max_by(a, b, cmp)
(ensured by the default implementation).min(a, b) == min_by(a, b, cmp)
(ensured by the default implementation).- For
a.clamp(min, max)
, see the method docs (ensured by the default implementation).
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.
§Corollaries
From the above and the requirements of PartialOrd
, it follows that for all a
, b
and c
:
- exactly one of
a < b
,a == b
ora > b
is true; and <
is transitive:a < b
andb < c
impliesa < c
. The same must hold for both==
and>
.
Mathematically speaking, the <
operator defines a strict weak order. In cases where ==
conforms to mathematical equality, it also defines a strict total order.
§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 primarily 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, Eq, PartialOrd, Ord)]
enum E {
Top,
Bottom,
}
assert!(E::Top < E::Bottom);
However, manually setting the discriminants can override this default behavior:
#[derive(PartialEq, Eq, PartialOrd, Ord)]
enum E {
Top = 2,
Bottom = 1,
}
assert!(E::Bottom < E::Top);
§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 sequences 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
, PartialEq
, and Eq
.
Because Ord
implies a stronger ordering relationship than PartialOrd
, and both Ord
and
PartialOrd
must agree, you must choose how to implement Ord
first. You can choose to
derive it, or implement it manually. If you derive it, you should derive all four traits. If you
implement it manually, you should manually implement all four traits, based on the
implementation of Ord
.
Here’s an example where you want to define the Character
comparison by health
and
experience
only, disregarding the field mana
:
use std::cmp::Ordering;
struct Character {
health: u32,
experience: u32,
mana: f32,
}
impl Ord for Character {
fn cmp(&self, other: &Self) -> Ordering {
self.experience
.cmp(&other.experience)
.then(self.health.cmp(&other.health))
}
}
impl PartialOrd for Character {
fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
Some(self.cmp(other))
}
}
impl PartialEq for Character {
fn eq(&self, other: &Self) -> bool {
self.health == other.health && self.experience == other.experience
}
}
impl Eq for Character {}
If all you need is to slice::sort
a type by a field value, it can be simpler to use
slice::sort_by_key
.
§Examples of incorrect Ord
implementations
use std::cmp::Ordering;
#[derive(Debug)]
struct Character {
health: f32,
}
impl Ord for Character {
fn cmp(&self, other: &Self) -> std::cmp::Ordering {
if self.health < other.health {
Ordering::Less
} else if self.health > other.health {
Ordering::Greater
} else {
Ordering::Equal
}
}
}
impl PartialOrd for Character {
fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
Some(self.cmp(other))
}
}
impl PartialEq for Character {
fn eq(&self, other: &Self) -> bool {
self.health == other.health
}
}
impl Eq for Character {}
let a = Character { health: 4.5 };
let b = Character { health: f32::NAN };
// Mistake: floating-point values do not form a total order and using the built-in comparison
// operands to implement `Ord` irregardless of that reality does not change it. Use
// `f32::total_cmp` if you need a total order for floating-point values.
// Reflexivity requirement of `Ord` is not given.
assert!(a == a);
assert!(b != b);
// Antisymmetry requirement of `Ord` is not given. Only one of a < c and c < a is allowed to be
// true, not both or neither.
assert_eq!((a < b) as u8 + (b < a) as u8, 0);
use std::cmp::Ordering;
#[derive(Debug)]
struct Character {
health: u32,
experience: u32,
}
impl PartialOrd for Character {
fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
Some(self.cmp(other))
}
}
impl Ord for Character {
fn cmp(&self, other: &Self) -> std::cmp::Ordering {
if self.health < 50 {
self.health.cmp(&other.health)
} else {
self.experience.cmp(&other.experience)
}
}
}
// For performance reasons implementing `PartialEq` this way is not the idiomatic way, but it
// ensures consistent behavior between `PartialEq`, `PartialOrd` and `Ord` in this example.
impl PartialEq for Character {
fn eq(&self, other: &Self) -> bool {
self.cmp(other) == Ordering::Equal
}
}
impl Eq for Character {}
let a = Character {
health: 3,
experience: 5,
};
let b = Character {
health: 10,
experience: 77,
};
let c = Character {
health: 143,
experience: 2,
};
// Mistake: The implementation of `Ord` compares different fields depending on the value of
// `self.health`, the resulting order is not total.
// Transitivity requirement of `Ord` is not given. If a is smaller than b and b is smaller than
// c, by transitive property a must also be smaller than c.
assert!(a < b && b < c && c < a);
// Antisymmetry requirement of `Ord` is not given. Only one of a < c and c < a is allowed to be
// true, not both or neither.
assert_eq!((a < c) as u8 + (c < a) as u8, 2);
The documentation of PartialOrd
contains further examples, for example it’s wrong for
PartialOrd
and PartialEq
to disagree.
Required Methods§
1.0.0 · Sourcefn cmp(&self, other: &Self) -> Ordering
fn cmp(&self, other: &Self) -> Ordering
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§
1.21.0 · Sourcefn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values.
Returns the second argument if the comparison determines them to be equal.
§Examples
assert_eq!(1.max(2), 2);
assert_eq!(2.max(2), 2);
use std::cmp::Ordering;
#[derive(Eq)]
struct Equal(&'static str);
impl PartialEq for Equal {
fn eq(&self, other: &Self) -> bool { true }
}
impl PartialOrd for Equal {
fn partial_cmp(&self, other: &Self) -> Option<Ordering> { Some(Ordering::Equal) }
}
impl Ord for Equal {
fn cmp(&self, other: &Self) -> Ordering { Ordering::Equal }
}
assert_eq!(Equal("self").max(Equal("other")).0, "other");
1.21.0 · Sourcefn min(self, other: Self) -> Selfwhere
Self: Sized,
fn min(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the minimum of two values.
Returns the first argument if the comparison determines them to be equal.
§Examples
assert_eq!(1.min(2), 1);
assert_eq!(2.min(2), 2);
use std::cmp::Ordering;
#[derive(Eq)]
struct Equal(&'static str);
impl PartialEq for Equal {
fn eq(&self, other: &Self) -> bool { true }
}
impl PartialOrd for Equal {
fn partial_cmp(&self, other: &Self) -> Option<Ordering> { Some(Ordering::Equal) }
}
impl Ord for Equal {
fn cmp(&self, other: &Self) -> Ordering { Ordering::Equal }
}
assert_eq!(Equal("self").min(Equal("other")).0, "self");
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.
Implementors§
impl Ord for AccountEntryExt
impl Ord for AccountEntryExtensionV1Ext
impl Ord for AccountEntryExtensionV2Ext
impl Ord for AccountFlags
impl Ord for AccountMergeResult
impl Ord for AccountMergeResultCode
impl Ord for AllowTrustResult
impl Ord for AllowTrustResultCode
impl Ord for ArchivalProofBody
impl Ord for ArchivalProofType
impl Ord for Asset
impl Ord for AssetCode
impl Ord for AssetType
impl Ord for AuthenticatedMessage
impl Ord for BeginSponsoringFutureReservesResult
impl Ord for BeginSponsoringFutureReservesResultCode
impl Ord for BinaryFuseFilterType
impl Ord for BucketEntry
impl Ord for BucketEntryType
impl Ord for BucketListType
impl Ord for BucketMetadataExt
impl Ord for BumpSequenceResult
impl Ord for BumpSequenceResultCode
impl Ord for ChangeTrustAsset
impl Ord for ChangeTrustResult
impl Ord for ChangeTrustResultCode
impl Ord for ClaimAtom
impl Ord for ClaimAtomType
impl Ord for ClaimClaimableBalanceResult
impl Ord for ClaimClaimableBalanceResultCode
impl Ord for ClaimPredicate
impl Ord for ClaimPredicateType
impl Ord for ClaimableBalanceEntryExt
impl Ord for ClaimableBalanceEntryExtensionV1Ext
impl Ord for ClaimableBalanceFlags
impl Ord for ClaimableBalanceId
impl Ord for ClaimableBalanceIdType
impl Ord for Claimant
impl Ord for ClaimantType
impl Ord for ClawbackClaimableBalanceResult
impl Ord for ClawbackClaimableBalanceResultCode
impl Ord for ClawbackResult
impl Ord for ClawbackResultCode
impl Ord for ColdArchiveBucketEntry
impl Ord for ColdArchiveBucketEntryType
impl Ord for ConfigSettingEntry
impl Ord for ConfigSettingId
impl Ord for ContractCodeEntryExt
impl Ord for ContractCostType
impl Ord for ContractDataDurability
impl Ord for ContractEventBody
impl Ord for ContractEventType
impl Ord for ContractExecutable
impl Ord for ContractExecutableType
impl Ord for ContractIdPreimage
impl Ord for ContractIdPreimageType
impl Ord for CreateAccountResult
impl Ord for CreateAccountResultCode
impl Ord for CreateClaimableBalanceResult
impl Ord for CreateClaimableBalanceResultCode
impl Ord for CryptoKeyType
impl Ord for DataEntryExt
impl Ord for EndSponsoringFutureReservesResult
impl Ord for EndSponsoringFutureReservesResultCode
impl Ord for EnvelopeType
impl Ord for ErrorCode
impl Ord for ExtendFootprintTtlResult
impl Ord for ExtendFootprintTtlResultCode
impl Ord for ExtensionPoint
impl Ord for FeeBumpTransactionExt
impl Ord for FeeBumpTransactionInnerTx
impl Ord for GeneralizedTransactionSet
impl Ord for HashIdPreimage
impl Ord for HostFunction
impl Ord for HostFunctionType
impl Ord for HotArchiveBucketEntry
impl Ord for HotArchiveBucketEntryType
impl Ord for InflationResult
impl Ord for InflationResultCode
impl Ord for InnerTransactionResultExt
impl Ord for InnerTransactionResultResult
impl Ord for InvokeHostFunctionResult
impl Ord for InvokeHostFunctionResultCode
impl Ord for IpAddrType
impl Ord for LedgerCloseMeta
impl Ord for LedgerCloseMetaExt
impl Ord for LedgerEntryChange
impl Ord for LedgerEntryChangeType
impl Ord for LedgerEntryData
impl Ord for LedgerEntryExt
impl Ord for LedgerEntryExtensionV1Ext
impl Ord for LedgerEntryType
impl Ord for LedgerHeaderExt
impl Ord for LedgerHeaderExtensionV1Ext
impl Ord for LedgerHeaderFlags
impl Ord for LedgerHeaderHistoryEntryExt
impl Ord for LedgerKey
impl Ord for LedgerUpgrade
impl Ord for LedgerUpgradeType
impl Ord for LiquidityPoolDepositResult
impl Ord for LiquidityPoolDepositResultCode
impl Ord for LiquidityPoolEntryBody
impl Ord for LiquidityPoolParameters
impl Ord for LiquidityPoolType
impl Ord for LiquidityPoolWithdrawResult
impl Ord for LiquidityPoolWithdrawResultCode
impl Ord for ManageBuyOfferResult
impl Ord for ManageBuyOfferResultCode
impl Ord for ManageDataResult
impl Ord for ManageDataResultCode
impl Ord for ManageOfferEffect
impl Ord for ManageOfferSuccessResultOffer
impl Ord for ManageSellOfferResult
impl Ord for ManageSellOfferResultCode
impl Ord for Memo
impl Ord for MemoType
impl Ord for MessageType
impl Ord for loam_sdk::soroban_sdk::xdr::MuxedAccount
impl Ord for OfferEntryExt
impl Ord for OfferEntryFlags
impl Ord for OperationBody
impl Ord for OperationResult
impl Ord for OperationResultCode
impl Ord for OperationResultTr
impl Ord for OperationType
impl Ord for PathPaymentStrictReceiveResult
impl Ord for PathPaymentStrictReceiveResultCode
impl Ord for PathPaymentStrictSendResult
impl Ord for PathPaymentStrictSendResultCode
impl Ord for PaymentResult
impl Ord for PaymentResultCode
impl Ord for PeerAddressIp
impl Ord for PersistedScpState
impl Ord for PreconditionType
impl Ord for Preconditions
impl Ord for loam_sdk::soroban_sdk::xdr::PublicKey
impl Ord for PublicKeyType
impl Ord for RestoreFootprintResult
impl Ord for RestoreFootprintResultCode
impl Ord for RevokeSponsorshipOp
impl Ord for RevokeSponsorshipResult
impl Ord for RevokeSponsorshipResultCode
impl Ord for RevokeSponsorshipType
impl Ord for ScAddress
impl Ord for ScAddressType
impl Ord for ScEnvMetaEntry
impl Ord for ScEnvMetaKind
impl Ord for ScError
impl Ord for ScErrorCode
impl Ord for ScErrorType
impl Ord for ScMetaEntry
impl Ord for ScMetaKind
impl Ord for ScSpecEntry
impl Ord for ScSpecEntryKind
impl Ord for ScSpecType
impl Ord for ScSpecTypeDef
impl Ord for ScSpecUdtUnionCaseV0
impl Ord for ScSpecUdtUnionCaseV0Kind
impl Ord for ScVal
impl Ord for ScValType
impl Ord for ScpHistoryEntry
impl Ord for ScpStatementPledges
impl Ord for ScpStatementType
impl Ord for SetOptionsResult
impl Ord for SetOptionsResultCode
impl Ord for SetTrustLineFlagsResult
impl Ord for SetTrustLineFlagsResultCode
impl Ord for SignerKey
impl Ord for SignerKeyType
impl Ord for SorobanAuthorizedFunction
impl Ord for SorobanAuthorizedFunctionType
impl Ord for SorobanCredentials
impl Ord for SorobanCredentialsType
impl Ord for SorobanTransactionMetaExt
impl Ord for StellarMessage
impl Ord for StellarValueExt
impl Ord for StellarValueType
impl Ord for StoredTransactionSet
impl Ord for SurveyMessageCommandType
impl Ord for SurveyMessageResponseType
impl Ord for SurveyResponseBody
impl Ord for ThresholdIndexes
impl Ord for TransactionEnvelope
impl Ord for TransactionExt
impl Ord for TransactionHistoryEntryExt
impl Ord for TransactionHistoryResultEntryExt
impl Ord for TransactionMeta
impl Ord for TransactionPhase
impl Ord for TransactionResultCode
impl Ord for TransactionResultExt
impl Ord for TransactionResultResult
impl Ord for TransactionSignaturePayloadTaggedTransaction
impl Ord for TransactionV0Ext
impl Ord for TrustLineAsset
impl Ord for TrustLineEntryExt
impl Ord for TrustLineEntryExtensionV2Ext
impl Ord for TrustLineEntryV1Ext
impl Ord for TrustLineFlags
impl Ord for TxSetComponent
impl Ord for TxSetComponentType
impl Ord for Type
impl Ord for TypeVariant
impl Ord for AsciiChar
impl Ord for Infallible
impl Ord for loam_sdk::soroban_sdk::testutils::arbitrary::std::io::ErrorKind
impl Ord for IpAddr
impl Ord for SocketAddr
impl Ord for Ordering
impl Ord for ark_std::io::error::ErrorKind
impl Ord for const_oid::error::Error
impl Ord for Class
impl Ord for der::tag::Tag
impl Ord for TagMode
impl Ord for UnescapeError
impl Ord for Sign
impl Ord for soroban_env_common::val::Tag
impl Ord for AccessType
impl Ord for DecodeError
impl Ord for Strkey
impl Ord for ValueType
impl Ord for BigEndian
impl Ord for LittleEndian
impl Ord for bool
impl Ord for char
impl Ord for i8
impl Ord for i16
impl Ord for i32
impl Ord for i64
impl Ord for i128
impl Ord for isize
impl Ord for !
impl Ord for str
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 Ord for u8
impl Ord for u16
impl Ord for u32
impl Ord for u64
impl Ord for u128
impl Ord for ()
impl Ord for usize
impl Ord for Address
impl Ord for Bytes
impl Ord for loam_sdk::soroban_sdk::Duration
impl Ord for loam_sdk::soroban_sdk::Error
impl Ord for loam_sdk::soroban_sdk::I256
impl Ord for loam_sdk::soroban_sdk::String
impl Ord for Symbol
impl Ord for SymbolStr
impl Ord for Timepoint
impl Ord for loam_sdk::soroban_sdk::U256
impl Ord for AccountEntry
impl Ord for AccountEntryExtensionV1
impl Ord for AccountEntryExtensionV2
impl Ord for AccountEntryExtensionV3
impl Ord for AccountId
impl Ord for AllowTrustOp
impl Ord for AlphaNum4
impl Ord for AlphaNum12
impl Ord for ArchivalProof
impl Ord for ArchivalProofNode
impl Ord for AssetCode4
impl Ord for AssetCode12
impl Ord for Auth
impl Ord for AuthCert
impl Ord for AuthenticatedMessageV0
impl Ord for BeginSponsoringFutureReservesOp
impl Ord for BucketMetadata
impl Ord for BumpSequenceOp
impl Ord for ChangeTrustOp
impl Ord for ClaimClaimableBalanceOp
impl Ord for ClaimLiquidityAtom
impl Ord for ClaimOfferAtom
impl Ord for ClaimOfferAtomV0
impl Ord for ClaimableBalanceEntry
impl Ord for ClaimableBalanceEntryExtensionV1
impl Ord for ClaimantV0
impl Ord for ClawbackClaimableBalanceOp
impl Ord for ClawbackOp
impl Ord for ColdArchiveArchivedLeaf
impl Ord for ColdArchiveBoundaryLeaf
impl Ord for ColdArchiveDeletedLeaf
impl Ord for ColdArchiveHashEntry
impl Ord for ConfigSettingContractBandwidthV0
impl Ord for ConfigSettingContractComputeV0
impl Ord for ConfigSettingContractEventsV0
impl Ord for ConfigSettingContractExecutionLanesV0
impl Ord for ConfigSettingContractHistoricalDataV0
impl Ord for ConfigSettingContractLedgerCostV0
impl Ord for ConfigUpgradeSet
impl Ord for ConfigUpgradeSetKey
impl Ord for ContractCodeCostInputs
impl Ord for ContractCodeEntry
impl Ord for ContractCodeEntryV1
impl Ord for ContractCostParamEntry
impl Ord for ContractCostParams
impl Ord for ContractDataEntry
impl Ord for ContractEvent
impl Ord for ContractEventV0
impl Ord for ContractIdPreimageFromAddress
impl Ord for CreateAccountOp
impl Ord for CreateClaimableBalanceOp
impl Ord for CreateContractArgs
impl Ord for CreateContractArgsV2
impl Ord for CreatePassiveSellOfferOp
impl Ord for Curve25519Public
impl Ord for Curve25519Secret
impl Ord for DataEntry
impl Ord for DataValue
impl Ord for DecoratedSignature
impl Ord for DiagnosticEvent
impl Ord for DiagnosticEvents
impl Ord for DontHave
impl Ord for loam_sdk::soroban_sdk::xdr::Duration
impl Ord for EncryptedBody
impl Ord for EvictionIterator
impl Ord for ExistenceProofBody
impl Ord for ExtendFootprintTtlOp
impl Ord for FeeBumpTransaction
impl Ord for FeeBumpTransactionEnvelope
impl Ord for FloodAdvert
impl Ord for FloodDemand
impl Ord for Hash
impl Ord for HashIdPreimageContractId
impl Ord for HashIdPreimageOperationId
impl Ord for HashIdPreimageRevokeId
impl Ord for HashIdPreimageSorobanAuthorization
impl Ord for Hello
impl Ord for HmacSha256Key
impl Ord for HmacSha256Mac
impl Ord for InflationPayout
impl Ord for InnerTransactionResult
impl Ord for InnerTransactionResultPair
impl Ord for Int128Parts
impl Ord for Int256Parts
impl Ord for InvokeContractArgs
impl Ord for InvokeHostFunctionOp
impl Ord for InvokeHostFunctionSuccessPreImage
impl Ord for LedgerBounds
impl Ord for LedgerCloseMetaExtV1
impl Ord for LedgerCloseMetaV0
impl Ord for LedgerCloseMetaV1
impl Ord for LedgerCloseValueSignature
impl Ord for LedgerEntry
impl Ord for LedgerEntryChanges
impl Ord for LedgerEntryExtensionV1
impl Ord for LedgerFootprint
impl Ord for LedgerHeader
impl Ord for LedgerHeaderExtensionV1
impl Ord for LedgerHeaderHistoryEntry
impl Ord for LedgerKeyAccount
impl Ord for LedgerKeyClaimableBalance
impl Ord for LedgerKeyConfigSetting
impl Ord for LedgerKeyContractCode
impl Ord for LedgerKeyContractData
impl Ord for LedgerKeyData
impl Ord for LedgerKeyLiquidityPool
impl Ord for LedgerKeyOffer
impl Ord for LedgerKeyTrustLine
impl Ord for LedgerKeyTtl
impl Ord for LedgerScpMessages
impl Ord for Liabilities
impl Ord for Limits
impl Ord for LiquidityPoolConstantProductParameters
impl Ord for LiquidityPoolDepositOp
impl Ord for LiquidityPoolEntry
impl Ord for LiquidityPoolEntryConstantProduct
impl Ord for LiquidityPoolWithdrawOp
impl Ord for ManageBuyOfferOp
impl Ord for ManageDataOp
impl Ord for ManageOfferSuccessResult
impl Ord for ManageSellOfferOp
impl Ord for MuxedAccountMed25519
impl Ord for NodeId
impl Ord for NonexistenceProofBody
impl Ord for OfferEntry
impl Ord for Operation
impl Ord for OperationMeta
impl Ord for PathPaymentStrictReceiveOp
impl Ord for PathPaymentStrictReceiveResultSuccess
impl Ord for PathPaymentStrictSendOp
impl Ord for PathPaymentStrictSendResultSuccess
impl Ord for PaymentOp
impl Ord for PeerAddress
impl Ord for PeerStatList
impl Ord for PeerStats
impl Ord for PersistedScpStateV0
impl Ord for PersistedScpStateV1
impl Ord for PoolId
impl Ord for PreconditionsV2
impl Ord for Price
impl Ord for ProofLevel
impl Ord for RestoreFootprintOp
impl Ord for RevokeSponsorshipOpSigner
impl Ord for SError
impl Ord for ScBytes
impl Ord for ScContractInstance
impl Ord for ScEnvMetaEntryInterfaceVersion
impl Ord for ScMap
impl Ord for ScMapEntry
impl Ord for ScMetaV0
impl Ord for ScNonceKey
impl Ord for ScSpecFunctionInputV0
impl Ord for ScSpecFunctionV0
impl Ord for ScSpecTypeBytesN
impl Ord for ScSpecTypeMap
impl Ord for ScSpecTypeOption
impl Ord for ScSpecTypeResult
impl Ord for ScSpecTypeTuple
impl Ord for ScSpecTypeUdt
impl Ord for ScSpecTypeVec
impl Ord for ScSpecUdtEnumCaseV0
impl Ord for ScSpecUdtEnumV0
impl Ord for ScSpecUdtErrorEnumCaseV0
impl Ord for ScSpecUdtErrorEnumV0
impl Ord for ScSpecUdtStructFieldV0
impl Ord for ScSpecUdtStructV0
impl Ord for ScSpecUdtUnionCaseTupleV0
impl Ord for ScSpecUdtUnionCaseVoidV0
impl Ord for ScSpecUdtUnionV0
impl Ord for ScString
impl Ord for ScSymbol
impl Ord for ScVec
impl Ord for ScpBallot
impl Ord for ScpEnvelope
impl Ord for ScpHistoryEntryV0
impl Ord for ScpNomination
impl Ord for ScpQuorumSet
impl Ord for ScpStatement
impl Ord for ScpStatementConfirm
impl Ord for ScpStatementExternalize
impl Ord for ScpStatementPrepare
impl Ord for SendMore
impl Ord for SendMoreExtended
impl Ord for SequenceNumber
impl Ord for SerializedBinaryFuseFilter
impl Ord for SetOptionsOp
impl Ord for SetTrustLineFlagsOp
impl Ord for ShortHashSeed
impl Ord for Signature
impl Ord for SignatureHint
impl Ord for SignedSurveyRequestMessage
impl Ord for SignedSurveyResponseMessage
impl Ord for SignedTimeSlicedSurveyRequestMessage
impl Ord for SignedTimeSlicedSurveyResponseMessage
impl Ord for SignedTimeSlicedSurveyStartCollectingMessage
impl Ord for SignedTimeSlicedSurveyStopCollectingMessage
impl Ord for Signer
impl Ord for SignerKeyEd25519SignedPayload
impl Ord for SimplePaymentResult
impl Ord for SorobanAddressCredentials
impl Ord for SorobanAuthorizationEntry
impl Ord for SorobanAuthorizedInvocation
impl Ord for SorobanResources
impl Ord for SorobanTransactionData
impl Ord for SorobanTransactionMeta
impl Ord for SorobanTransactionMetaExtV1
impl Ord for SponsorshipDescriptor
impl Ord for StateArchivalSettings
impl Ord for StellarValue
impl Ord for StoredDebugTransactionSet
impl Ord for String32
impl Ord for String64
impl Ord for SurveyRequestMessage
impl Ord for SurveyResponseMessage
impl Ord for Thresholds
impl Ord for TimeBounds
impl Ord for TimePoint
impl Ord for TimeSlicedNodeData
impl Ord for TimeSlicedPeerData
impl Ord for TimeSlicedPeerDataList
impl Ord for TimeSlicedSurveyRequestMessage
impl Ord for TimeSlicedSurveyResponseMessage
impl Ord for TimeSlicedSurveyStartCollectingMessage
impl Ord for TimeSlicedSurveyStopCollectingMessage
impl Ord for TopologyResponseBodyV0
impl Ord for TopologyResponseBodyV1
impl Ord for TopologyResponseBodyV2
impl Ord for Transaction
impl Ord for TransactionHistoryEntry
impl Ord for TransactionHistoryResultEntry
impl Ord for TransactionMetaV1
impl Ord for TransactionMetaV2
impl Ord for TransactionMetaV3
impl Ord for TransactionResult
impl Ord for TransactionResultMeta
impl Ord for TransactionResultPair
impl Ord for TransactionResultSet
impl Ord for TransactionSet
impl Ord for TransactionSetV1
impl Ord for TransactionSignaturePayload
impl Ord for TransactionV0
impl Ord for TransactionV0Envelope
impl Ord for TransactionV1Envelope
impl Ord for TrustLineEntry
impl Ord for TrustLineEntryExtensionV2
impl Ord for TrustLineEntryV1
impl Ord for TtlEntry
impl Ord for TxAdvertVector
impl Ord for TxDemandVector
impl Ord for TxSetComponentTxsMaybeDiscountedFee
impl Ord for UInt128Parts
impl Ord for UInt256Parts
impl Ord for Uint256
impl Ord for UpgradeEntryMeta
impl Ord for UpgradeType
impl Ord for Value
impl Ord for TypeId
impl Ord for CpuidResult
impl Ord for ByteStr
impl Ord for ByteString
impl Ord for CStr
impl Ord for CString
impl Ord for OsStr
impl Ord for OsString
impl Ord for loam_sdk::soroban_sdk::testutils::arbitrary::std::fmt::Error
impl Ord for PhantomPinned
impl Ord for Ipv4Addr
impl Ord for Ipv6Addr
impl Ord for SocketAddrV4
impl Ord for SocketAddrV6
impl Ord for Location<'_>
impl Ord for Components<'_>
impl Ord for Path
impl Ord for PathBuf
impl Ord for PrefixComponent<'_>
impl Ord for Alignment
impl Ord for loam_sdk::soroban_sdk::testutils::arbitrary::std::string::String
impl Ord for loam_sdk::soroban_sdk::testutils::arbitrary::std::time::Duration
impl Ord for Instant
impl Ord for SystemTime
impl Ord for SparseTerm
impl Ord for ObjectIdentifier
impl Ord for Limb
impl Ord for GeneralizedTime
impl Ord for Null
impl Ord for UtcTime
impl Ord for DateTime
impl Ord for IndefiniteLength
impl Ord for Length
impl Ord for TagNumber
impl Ord for RecoveryId
impl Ord for ethnum::int::I256
impl Ord for ethnum::uint::U256
impl Ord for k256::arithmetic::scalar::Scalar
impl Ord for Secp256k1
impl Ord for num_bigint::bigint::BigInt
impl Ord for BigUint
impl Ord for p256::arithmetic::scalar::Scalar
impl Ord for NistP256
impl Ord for BuildMetadata
impl Ord for Prerelease
impl Ord for semver::Version
impl Ord for DurationSmall
impl Ord for I64Small
impl Ord for I128Small
impl Ord for I256Small
impl Ord for TimepointSmall
impl Ord for U64Small
impl Ord for U128Small
impl Ord for U256Small
impl Ord for ScValObject
impl Ord for SymbolSmall
impl Ord for CostTracker
impl Ord for FuncType
impl Ord for stellar_strkey::ed25519::MuxedAccount
impl Ord for PrivateKey
impl Ord for stellar_strkey::ed25519::PublicKey
impl Ord for SignedPayload
impl Ord for Contract
impl Ord for HashX
impl Ord for PreAuthTx
impl Ord for ATerm
impl Ord for B0
impl Ord for B1
impl Ord for Z0
impl Ord for Equal
impl Ord for Greater
impl Ord for Less
impl Ord for UTerm
impl Ord for Pages
impl Ord for UntypedValue
impl Ord for KebabStr
impl Ord for KebabString
impl Ord for ResourceId
impl<'a> Ord for Component<'a>
impl<'a> Ord for Prefix<'a>
impl<'a> Ord for MockAuth<'a>
impl<'a> Ord for MockAuthInvoke<'a>
impl<'a> Ord for PhantomContravariantLifetime<'a>
impl<'a> Ord for PhantomCovariantLifetime<'a>
impl<'a> Ord for PhantomInvariantLifetime<'a>
impl<'a> Ord for AnyRef<'a>
impl<'a> Ord for BitStringRef<'a>
impl<'a> Ord for Ia5StringRef<'a>
impl<'a> Ord for IntRef<'a>
impl<'a> Ord for UintRef<'a>
impl<'a> Ord for OctetStringRef<'a>
impl<'a> Ord for PrintableStringRef<'a>
impl<'a> Ord for TeletexStringRef<'a>
impl<'a> Ord for Utf8StringRef<'a>
impl<'a> Ord for VideotexStringRef<'a>
impl<'a> Ord for ScValObjRef<'a>
impl<'a> Ord for soroban_env_common::Version<'a>
impl<'a> Ord for stellar_strkey::Version<'a>
impl<'a> Ord for stellar_xdr::Version<'a>
impl<'a, T> Ord for ContextSpecificRef<'a, T>where
T: Ord,
impl<A> Ord for &A
impl<A> Ord for &mut A
impl<A> Ord for SmallVec<A>
impl<B> Ord for Cow<'_, B>
impl<C> Ord for VerifyingKey<C>where
C: PrimeCurve + CurveArithmetic,
<C as CurveArithmetic>::AffinePoint: FromEncodedPoint<C> + ToEncodedPoint<C>,
<C as Curve>::FieldBytesSize: ModulusSize,
impl<C> Ord for elliptic_curve::public_key::PublicKey<C>where
C: CurveArithmetic,
<C as CurveArithmetic>::AffinePoint: FromEncodedPoint<C> + ToEncodedPoint<C>,
<C as Curve>::FieldBytesSize: ModulusSize,
impl<C> Ord for ScalarPrimitive<C>where
C: Curve,
impl<Dyn> Ord for DynMetadata<Dyn>where
Dyn: ?Sized,
impl<F> Ord for Fwhere
F: FnPtr,
impl<K, V> Ord for Map<K, V>
impl<K, V> Ord for IndexMap<K, V>
impl<K, V> Ord for indexmap::map::slice::Slice<K, V>
impl<K, V, A> Ord for BTreeMap<K, V, A>
impl<L, R> Ord for Either<L, R>
impl<O> Ord for I16<O>where
O: ByteOrder,
impl<O> Ord for I32<O>where
O: ByteOrder,
impl<O> Ord for I64<O>where
O: ByteOrder,
impl<O> Ord for I128<O>where
O: ByteOrder,
impl<O> Ord for Isize<O>where
O: ByteOrder,
impl<O> Ord for U16<O>where
O: ByteOrder,
impl<O> Ord for U32<O>where
O: ByteOrder,
impl<O> Ord for U64<O>where
O: ByteOrder,
impl<O> Ord for U128<O>where
O: ByteOrder,
impl<O> Ord for Usize<O>where
O: ByteOrder,
impl<P> Ord for MillerLoopOutput<P>where
P: Pairing,
impl<P> Ord for PairingOutput<P>where
P: Pairing,
impl<P> Ord for CubicExtField<P>where
P: CubicExtConfig,
CubicExtField
elements are ordered lexicographically.
impl<P> Ord for QuadExtField<P>where
P: QuadExtConfig,
QuadExtField
elements are ordered lexicographically.
impl<P, const N: usize> Ord for Fp<P, N>where
P: FpConfig<N>,
Note that this implementation of Ord
compares field elements viewing
them as integers in the range 0, 1, …, P::MODULUS - 1. However, other
implementations of PrimeField
might choose a different ordering, and
as such, users should use this Ord
for applications where
any ordering suffices (like in a BTreeMap), and not in applications
where a particular ordering is required.
impl<Ptr> Ord for Pin<Ptr>
impl<Size> Ord for EncodedPoint<Size>where
Size: ModulusSize,
impl<T> Ord for Option<T>where
T: Ord,
impl<T> Ord for Poll<T>where
T: Ord,
impl<T> Ord for *const Twhere
T: ?Sized,
Pointer comparison is by address, as produced by the [
<*const T>::addr](pointer::addr)
method.
impl<T> Ord for *mut Twhere
T: ?Sized,
Pointer comparison is by address, as produced by the <*mut T>::addr
method.
impl<T> Ord for [T]where
T: Ord,
Implements comparison of slices lexicographically.
impl<T> Ord for (T₁, T₂, …, Tₙ)where
T: Ord,
This trait is implemented for tuples up to twelve items long.
impl<T> Ord for loam_sdk::soroban_sdk::Vec<T>
impl<T> Ord for Frame<T>
impl<T> Ord for Cell<T>
impl<T> Ord for RefCell<T>
impl<T> Ord for PhantomContravariant<T>where
T: ?Sized,
impl<T> Ord for PhantomCovariant<T>where
T: ?Sized,
impl<T> Ord for PhantomData<T>where
T: ?Sized,
impl<T> Ord for PhantomInvariant<T>where
T: ?Sized,
impl<T> Ord for ManuallyDrop<T>
impl<T> Ord for loam_sdk::soroban_sdk::testutils::arbitrary::std::num::NonZero<T>where
T: ZeroablePrimitive + Ord,
impl<T> Ord for Saturating<T>where
T: Ord,
impl<T> Ord for loam_sdk::soroban_sdk::testutils::arbitrary::std::num::Wrapping<T>where
T: Ord,
impl<T> Ord for NonNull<T>where
T: ?Sized,
impl<T> Ord for Exclusive<T>
impl<T> Ord for crypto_bigint::non_zero::NonZero<T>
impl<T> Ord for crypto_bigint::wrapping::Wrapping<T>where
T: Ord,
impl<T> Ord for ContextSpecific<T>where
T: Ord,
impl<T> Ord for IndexSet<T>where
T: Ord,
impl<T> Ord for indexmap::set::slice::Slice<T>where
T: Ord,
impl<T> Ord for Unalign<T>
impl<T> Ord for Reverse<T>where
T: Ord,
impl<T, A> Ord for Box<T, A>
impl<T, A> Ord for BTreeSet<T, A>
impl<T, A> Ord for LinkedList<T, A>
impl<T, A> Ord for VecDeque<T, A>
impl<T, A> Ord for Rc<T, A>
impl<T, A> Ord for UniqueRc<T, A>
impl<T, A> Ord for Arc<T, A>
impl<T, A> Ord for UniqueArc<T, A>
impl<T, A> Ord for loam_sdk::soroban_sdk::testutils::arbitrary::std::vec::Vec<T, A>
Implements ordering of vectors, lexicographically.
impl<T, B> Ord for Ref<B, T>
impl<T, E> Ord for Result<T, E>
impl<T, N> Ord for GenericArray<T, N>where
T: Ord,
N: ArrayLength<T>,
impl<T, const MAX: u32> Ord for VecM<T, MAX>where
T: Ord,
impl<T, const N: usize> Ord for [T; N]where
T: Ord,
Implements comparison of arrays lexicographically.
impl<T, const N: usize> Ord for Simd<T, N>
Lexicographic order. For the SIMD elementwise minimum and maximum, use simd_min and simd_max instead.