pub trait StableCompare {
const CAN_USE_UNSTABLE_SORT: bool;
// Required method
fn stable_cmp(&self, other: &Self) -> Ordering;
}
Expand description
This is a companion trait to StableOrd
. Some types like Symbol
can be
compared in a cross-session stable way, but their Ord
implementation is
not stable. In such cases, a StableOrd
implementation can be provided
to offer a lightweight way for stable sorting. (The more heavyweight option
is to sort via ToStableHashKey
, but then sorting needs to have access to
a stable hashing context and ToStableHashKey
can also be expensive as in
the case of Symbol
where it has to allocate a String
.)
See the documentation of StableOrd for how stable sort order is defined. The same definition applies here. Be careful when implementing this trait.
Required Associated Constants§
const CAN_USE_UNSTABLE_SORT: bool
Required Methods§
fn stable_cmp(&self, other: &Self) -> Ordering
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§
source§impl<T: StableOrd> StableCompare for T
impl<T: StableOrd> StableCompare for T
StableOrd
denotes that the type’s Ord
implementation is stable, so
we can implement StableCompare
by just delegating to Ord
.