- Implement
Hash
forOrdVar(T)
, ifT: Hash
- Add two new default methods
ord_subset_min_by_key
andord_subset_max_by_key
forOrdSubsetIterExt
to mimic std library.
- Allow
*_by_key()
functions for iterators and slices when the items aren'tOrdSubset
. Only the keys need to be. This changes the extension traits' bounds, therefore technically a [breaking change] (cause for major version bump) - Add long overdue
ord_subset_sort_by_key()
andord_subset_binary_search_by_key()
for slices
OrdVar::new_unchecked()
is no longer marked unsafe. Incorrectly constructedOrdVar
s can cause crashes and surprising behaviour but no memory unsafety- In slice sorting, uphold sort stability for values outside total order.
- Add
sort_unstable*
variants, following the std library additions in 1.20. Technically a [breaking change]. - Generalized traits so that
.ord_subset_binary_search*
works on immutable slices and anything else that implements AsRef<[T]>, but not AsMut<[T]>. Fixing this major oversight is also technically a [breaking change]. #![no_std]
support with new opt-out featurestd
Stable sorts are unavailable inno_std
mode. OrdSubset implementations for f32, f64 withno_std
require theunstable
feature of this crate (impls readded in 3.1 withoutunstable
).- Stabilized
_rev()
variants
- Add
OrdSubset
impls for allOrd
intrinsics, including arrays and tuples up to an arity of 32 and 12 respectively as well as slices. - Add
OrdSubset
impls forf32
,f64
inno_std
mode without requiringunstable
. - Add new feature
ops
for overloading operators forOrdVar<T>
for anything thatT
is overloaded for. Checks whether result can be ordered. This can be deactivated withunchecked ops
.
- Code tarball doesn't unnecessarily contain files with executable bit set anymore.