- Added
retain_backmethods toRingMapandRingSet.
- Fix item hygiene in map and set macros. Previously, an internal
const CAPcould shadow the same name in the caller's namespace. - Allow
constinitialization of emptyringmap_with_default!andringset_with_default!. The hasher may also be omitted if it's inferrable.
- Simplify comparisons where
Equivalentisn't needed (Q = K). - Unify index assertions for bounds checks.
- Fix (or
expect) clippy lints.
- MSRV: Rust 1.85.0 or later is now required.
- Updated the
hashbrowndependency to 0.17. - Made more
map::Slicemethodsconst:new_mut,first_mut,last_mut,split_at_mut,split_at_mut_checked,split_first_mut,split_last_mut
- Made some
Slicemethodsconst:map::Slice::{first,last,split_at,split_at_checked,split_first,split_last}set::Slice::{first,last,split_at,split_at_checked,split_first,split_last}
- Added
RingMap::get_range,get_range_mut,range, andrange_mut. - Added
RingSet::get_rangeandrange.
- Added
map::Slice::split_at_checkedandsplit_at_mut_checked. - Added
set::Slice::split_at_checked.
- Simplified a lot of internals using
hashbrown's new bucket API.
- MSRV: Rust 1.82.0 or later is now required.
- Error types now implement
core::error::Error. - Added
pop_back_ifandpop_front_ifmethods toRingMapandRingSet. - Deprecated map and set
insert_fullin favor ofpush_backandpush_front. - Added new
Entryback/front methods and deprecated the old:insert=>push_back,push_frontinsert_entry=>push_back_entry,push_front_entryor_default=>or_push_back_default,or_push_front_defaultor_insert=>or_push_back,or_push_frontor_insert_with=>or_push_back_with,or_push_front_withor_insert_with_key=>or_push_back_with_key,or_push_front_with_key
- Updated the
hashbrowndependency to version 0.16.
- Switched the "serde" feature to depend on
serde_core, improving build parallelism in cases where other dependents have enabled "serde/derive".
- Added a
get_key_value_mutmethod toRingMap. - Removed the unnecessary
Ordbound oninsert_sorted_bymethods.
- Added
insert_sorted_byandinsert_sorted_by_keymethods toRingMap,RingSet, andVacantEntry, like customizable versions ofinsert_sorted. - Added
is_sorted,is_sorted_by, andis_sorted_by_keymethods toRingMapandRingSet, as well as theirSlicecounterparts. - Added
sort_by_keyandsort_unstable_by_keymethods toRingMapandRingSet, as well as parallel counterparts. - Added
replace_indexmethods toRingMap,RingSet, andVacantEntryto replace the key (or set value) at a given index. - Added optional
svalserialization support.
- Added
extract_ifmethods toRingMapandRingSet, similar to the methods forHashMapandHashSetwith ranges likeVec::extract_if. - Added more
#[track_caller]annotations to functions that may panic.
- Added a
get_disjoint_mutmethod toRingMap, matching Rust 1.86'sHashMapmethod. - Added a
get_disjoint_indices_mutmethod toRingMapandmap::Slice, matching Rust 1.86'sget_disjoint_mutmethod on slices.
- Added
ringmap_with_default!andringset_with_default!to be used with alternative hashers, especially when using the crate withoutstd. - Implemented
PartialEqbetween eachSliceand[]/arrays.
- Optimized the branch behavior of the iterators.
- Initial release, based on
indexmap v2.7.1.