1
Fork 0

Split StableCompare trait out of StableOrd trait.

StableCompare 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`.)
This commit is contained in:
Michael Woerister 2023-12-21 10:27:34 +01:00
parent 090d5eac72
commit 739e5ef49e
9 changed files with 118 additions and 22 deletions

View file

@ -527,7 +527,7 @@ impl<'a, V> LocalTableInContext<'a, V> {
}
pub fn items_in_stable_order(&self) -> Vec<(ItemLocalId, &'a V)> {
self.data.to_sorted_stable_ord()
self.data.items().map(|(&k, v)| (k, v)).into_sorted_stable_ord_by_key(|(k, _)| k)
}
}