ordermap
A hash table with consistent order and fast iteration.
1.2.0
13M downloads/mo
#2652 most downloaded on crates.io
indexmap-rs/ordermap
What this package is like to depend on
Last release 4 months ago
09 Apr 2026
Ships fairly regularly
a new release about every 2 months
Nearly every release is documented
notes for 41 of 41 stable releases
Nothing withdrawn
no release was ever pulled
10 years old
41 releases · first in 2016
6 releases in the last 12 months
see the full history below
Release timeline
41 releases · Sep 2016 to Apr 2026Releases
latest 41-
1.2.009 Apr 2026Release notes
Open source →- MSRV: Rust 1.85.0 or later is now required.
- Updated the
indexmapdependency to version 2.14.0.- New features include
const-ified methods onSlicetypes.
- New features include
-
1.1.007 Jan 2026Release notes
Open source →- Updated the
indexmapdependency to version 2.13.0 for new features:- Implemented
CloneforIntoKeysandIntoValues. - Added
map::Slice::split_at_checkedandsplit_at_mut_checked. - Added
set::Slice::split_at_checked.
- Implemented
- Updated the
-
1.0.018 Oct 2025Release notes
Open source →- MSRV: Rust 1.82.0 or later is now required.
- Updated the
indexmapdependency to version 2.12.0. - Added
pop_ifmethods toOrderMapandOrderSet, similar to the method forVecadded in Rust 1.86.
-
0.5.1215 Sep 2025 -
0.5.1115 Sep 2025Release notes
Open source →- Switched the "serde" feature to depend on
serde_core, improving build parallelism in cases where other dependents have enabled "serde/derive".
- Switched the "serde" feature to depend on
-
0.5.1009 Sep 2025Release notes
Open source →- Added a
get_key_value_mutmethod toOrderMap. - Removed the unnecessary
Ordbound oninsert_sorted_bymethods.
- Added a
-
0.5.922 Aug 2025Release notes
Open source →- Added
insert_sorted_byandinsert_sorted_by_keymethods toOrderMap,OrderSet, andVacantEntry, like customizable versions ofinsert_sorted. - Added
is_sorted,is_sorted_by, andis_sorted_by_keymethods toOrderMapandOrderSet, as well as theirSlicecounterparts. - Added
sort_by_keyandsort_unstable_by_keymethods toOrderMapandOrderSet, as well as parallel counterparts. - Added
replace_indexmethods toOrderMap,OrderSet, andVacantEntryto replace the key (or set value) at a given index. - Added optional
svalserialization support.
- Added
-
0.5.826 Jun 2025Release notes
Open source →- Added
extract_ifmethods toOrderMapandOrderSet, similar to the methods forHashMapandHashSetwith ranges likeVec::extract_if. - Added more
#[track_caller]annotations to functions that may panic.
- Added
-
0.5.705 Apr 2025Release notes
Open source →- Added a
get_disjoint_mutmethod toOrderMap, matching Rust 1.86'sHashMapmethod. - Added a
get_disjoint_indices_mutmethod toOrderMap, matching Rust 1.86'sget_disjoint_mutmethod on slices. - Updated the
indexmapdependency to version 2.9.0.
- Added a
-
0.5.610 Mar 2025Release notes
Open source →- Added
ordermap_with_default!andorderset_with_default!to be used with alternative hashers, especially when using the crate withoutstd. - Updated the
indexmapdependency to version 2.8.0.
- Added
-
0.5.520 Jan 2025Release notes
Open source →- Added
#[track_caller]to functions that may panic. - Updated the
indexmapdependency to version 2.7.1.
- Added
-
0.5.401 Dec 2024Release notes
Open source →- Added methods
Entry::insert_entryandVacantEntry::insert_entry, returning anOccupiedEntryafter insertion. - Updated the
indexmapdependency to version 2.7.0, indirectly updating tohashbrownversion 0.15 as well.
- Added methods
-
0.5.330 Aug 2024Release notes
Open source →- Added an
insert_beforemethod toOrderMapandOrderSet, as an alternative toshift_insertwith different behavior on existing entries. - Added
first_entryandlast_entrymethods toOrderMap. - Added
Fromimplementations betweenIndexedEntryandOccupiedEntry.
- Added an
-
0.5.213 Aug 2024Release notes
Open source →- Added methods
OrderMap::appendandOrderSet::append, moving all items from one map or set into another, and leaving the original capacity for reuse.
- Added methods
-
0.5.101 Aug 2024Release notes
Open source →- Added trait
MutableEntryKeyfor opt-in mutable access to map entry keys. - Added method
MutableKeys::iter_mut2for opt-in mutable iteration of map keys and values.
- Added trait
-
0.5.025 Jun 2024Release notes
Open source →- Reinstated
ordermapas a crate that wrapsindexmapwith stronger ordering semantics. It does consider order forPartialEqandEq, also adding implementations ofPartialOrd,Ord, andHash. Methods likeremoveuse the semantics of indexmap'sshift_remove.
- Reinstated
-
0.4.217 Nov 2018Release notes
Open source →- Inserted more deprecation information in the documentation. Note: the crate ordermap has been renamed with no change in functionality to indexmap; please use it under its new name.
-
0.4.114 Feb 2018Release notes
Open source →- Renamed crate to
indexmap; theordermapcrate is now deprecated and the typesOrderMap/Setnow have a deprecation notice.
- Renamed crate to
-
0.4.002 Feb 2018Release notes
Open source →-
This is the last release series for this
ordermapunder that name, because the crate is going to be renamed toindexmap(with typesIndexMap,IndexSet) and no change in functionality! -
The map and its associated structs moved into the
mapsubmodule of the crate, so that the map and set are symmetric- The iterators,
Entryand other structs are now underordermap::map::
- The iterators,
-
Internally refactored
OrderMap<K, V, S>so that all the main algorithms (insertion, lookup, removal etc) that don't use theSparameter (the hasher) are compiled without depending onS, which reduces generics bloat. -
Entry<K, V>no longer has a type parameterS, which is just like the standardHashMap's entry. -
Minimum Rust version requirement increased to Rust 1.18
-
-
0.3.514 Jan 2018 -
0.3.404 Jan 2018Release notes
Open source →- The
.retain()methods forOrderMapandOrderSetnow traverse the elements in order, and the retained elements keep their order - Added new methods
.sort_by(),.sort_keys()toOrderMapand.sort_by(),.sort()toOrderSet. These methods allow you to sort the maps in place efficiently.
- The
-
0.3.329 Dec 2017Release notes
Open source →- Document insertion behaviour better by @lucab
- Updated dependences (no feature changes) by @ignatenkobrain
-
0.3.225 Nov 2017Release notes
Open source →- Add
OrderSetby @cuviper! OrderMap::drainis now (too) a double ended iterator.
- Add
-
0.3.119 Nov 2017Release notes
Open source →- In all ordermap iterators, forward the
collectmethod to the underlying iterator as well. - Add crates.io categories.
- In all ordermap iterators, forward the
-
0.3.007 Oct 2017Release notes
Open source →- The methods
get_pair,get_pair_indexwere both replaced byget_full(and the same for the mutable case). - Method
swap_remove_pairreplaced byswap_remove_full. - Add trait
MutableKeysfor opt-in mutable key access. Mutable key access is only possible through the methods of this extension trait. - Add new trait
Equivalentfor key equivalence. This extends theBorrowtrait mechanism forOrderMap::getin a backwards compatible way, just some minor type inference related issues may become apparent. See #10 for more information. - Implement
Extend<(&K, &V)>by @xfix.
- The methods
-
0.2.1301 Oct 2017Release notes
Open source →- Fix deserialization to support custom hashers by @Techcable.
- Add methods
.index()on the entry types by @garro95.
-
0.2.1211 Sep 2017 -
0.2.1129 Aug 2017Release notes
Open source →- Support
ExactSizeIteratorfor the iterators. By @Binero. - Use
Box<[Pos]>internally, saving a word in theOrderMapstruct. - Serde support, with crate feature
"serde-1". By @xfix.
- Support
-
0.2.1029 Apr 2017 -
0.2.926 Mar 2017Release notes
Open source →- Add method
.is_empty()by @overvenus. - Implement
PartialEq, Eqby @overvenus. - Add method
.sorted_by().
- Add method
-
0.2.801 Mar 2017Release notes
Open source →- Add iterators
.values()and.values_mut(). - Fix compatibility with 32-bit platforms.
- Add iterators
-
0.2.702 Nov 2016 -
0.2.602 Nov 2016Release notes
Open source →- Add
OccupiedEntry::remove_entryand other minor entry methods, so that it now has all the features ofHashMap's entries.
- Add
-
0.2.531 Oct 2016 -
0.2.422 Oct 2016 -
0.2.311 Oct 2016Release notes
Open source →- Generalize
Entryfor now, so that it works on hashmaps with non-default hasher. However, there's a lingering compat issue since libstdHashMapdoes not parameterize its entries by the hasher (Styparm). - Special case some iterator methods like
.nth().
- Generalize
-
0.2.202 Oct 2016 -
0.2.102 Oct 2016 -
0.2.001 Oct 2016Release notes
Open source →- Add more
HashMapmethods & compat with its API. - Experimental support for
.entry()(the simplest parts of the API). - Add
.reserve()(placeholder impl). - Add
.remove()as synonym for.swap_remove(). - Changed
.insert()to swap value if the entry already exists, and returnOption. - Experimental support as an indexed hash map! Added methods
.get_index(),.get_index_mut(),.swap_remove_index(),.get_pair_index(),.get_pair_index_mut().
- Add more
-
0.1.219 Sep 2016Release notes
Open source →- Implement the 32/32 split idea for
Poswhich improves cache utilization and lookup performance.
- Implement the 32/32 split idea for
-
0.1.116 Sep 2016