PackageTrack
Sign in Get early access

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 2026
2017 2018 2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 41
  1. 1.2.0 09 Apr 2026
    Release notes

    chore: Release ordermap version 1.2.0

    Open source →
    Release notes
    • MSRV: Rust 1.85.0 or later is now required.
    • Updated the indexmap dependency to version 2.14.0.
      • New features include const-ified methods on Slice types.
    Open source →
  2. 1.1.0 07 Jan 2026
    Release notes

    chore: Release ordermap version 1.1.0

    Open source →
    Release notes
    • Updated the indexmap dependency to version 2.13.0 for new features:
      • Implemented Clone for IntoKeys and IntoValues.
      • Added map::Slice::split_at_checked and split_at_mut_checked.
      • Added set::Slice::split_at_checked.
    Open source →
  3. 1.0.0 18 Oct 2025
    Release notes

    chore: Release ordermap version 1.0.0

    Open source →
    Release notes
    • MSRV: Rust 1.82.0 or later is now required.
    • Updated the indexmap dependency to version 2.12.0.
    • Added pop_if methods to OrderMap and OrderSet, similar to the method for Vec added in Rust 1.86.
    Open source →
  4. 0.5.12 15 Sep 2025
    Release notes

    chore: Release ordermap version 0.5.12

    Open source →
    Release notes
    • Make the minimum serde version only apply when "serde" is enabled.
    Open source →
  5. 0.5.11 15 Sep 2025
    Release notes

    chore: Release ordermap version 0.5.11

    Open source →
    Release notes
    • Switched the "serde" feature to depend on serde_core, improving build parallelism in cases where other dependents have enabled "serde/derive".
    Open source →
  6. 0.5.10 09 Sep 2025
    Release notes

    chore: Release ordermap version 0.5.10

    Open source →
    Release notes
    • Added a get_key_value_mut method to OrderMap.
    • Removed the unnecessary Ord bound on insert_sorted_by methods.
    Open source →
  7. 0.5.9 22 Aug 2025
    Release notes

    chore: Release ordermap version 0.5.9

    Open source →
    Release notes
    • Added insert_sorted_by and insert_sorted_by_key methods to OrderMap, OrderSet, and VacantEntry, like customizable versions of insert_sorted.
    • Added is_sorted, is_sorted_by, and is_sorted_by_key methods to OrderMap and OrderSet, as well as their Slice counterparts.
    • Added sort_by_key and sort_unstable_by_key methods to OrderMap and OrderSet, as well as parallel counterparts.
    • Added replace_index methods to OrderMap, OrderSet, and VacantEntry to replace the key (or set value) at a given index.
    • Added optional sval serialization support.
    Open source →
  8. 0.5.8 26 Jun 2025
    Release notes

    chore: Release ordermap version 0.5.8

    Open source →
    Release notes
    • Added extract_if methods to OrderMap and OrderSet, similar to the methods for HashMap and HashSet with ranges like Vec::extract_if.
    • Added more #[track_caller] annotations to functions that may panic.
    Open source →
  9. 0.5.7 05 Apr 2025
    Release notes

    chore: Release ordermap version 0.5.7

    Open source →
    Release notes
    • Added a get_disjoint_mut method to OrderMap, matching Rust 1.86's HashMap method.
    • Added a get_disjoint_indices_mut method to OrderMap, matching Rust 1.86's get_disjoint_mut method on slices.
    • Updated the indexmap dependency to version 2.9.0.
    Open source →
  10. 0.5.6 10 Mar 2025
    Release notes

    chore: Release ordermap version 0.5.6

    Open source →
    Release notes
    • Added ordermap_with_default! and orderset_with_default! to be used with alternative hashers, especially when using the crate without std.
    • Updated the indexmap dependency to version 2.8.0.
    Open source →
  11. 0.5.5 20 Jan 2025
    Release notes
    • Added #[track_caller] to functions that may panic.
    • Updated the indexmap dependency to version 2.7.1.
    Open source →
  12. 0.5.4 01 Dec 2024
    Release notes
    • Added methods Entry::insert_entry and VacantEntry::insert_entry, returning an OccupiedEntry after insertion.
    • Updated the indexmap dependency to version 2.7.0, indirectly updating to hashbrown version 0.15 as well.
    Open source →
  13. 0.5.3 30 Aug 2024
    Release notes
    • Added an insert_before method to OrderMap and OrderSet, as an alternative to shift_insert with different behavior on existing entries.
    • Added first_entry and last_entry methods to OrderMap.
    • Added From implementations between IndexedEntry and OccupiedEntry.
    Open source →
  14. 0.5.2 13 Aug 2024
    Release notes
    • Added methods OrderMap::append and OrderSet::append, moving all items from one map or set into another, and leaving the original capacity for reuse.
    Open source →
  15. 0.5.1 01 Aug 2024
    Release notes
    • Added trait MutableEntryKey for opt-in mutable access to map entry keys.
    • Added method MutableKeys::iter_mut2 for opt-in mutable iteration of map keys and values.
    Open source →
  16. 0.5.0 25 Jun 2024
    Release notes
    • Reinstated ordermap as a crate that wraps indexmap with stronger ordering semantics. It does consider order for PartialEq and Eq, also adding implementations of PartialOrd, Ord, and Hash. Methods like remove use the semantics of indexmap's shift_remove.
    Open source →
  17. 0.4.2 17 Nov 2018
    Release notes
    • 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.
    Open source →
  18. 0.4.1 14 Feb 2018
    Release notes
    • Renamed crate to indexmap; the ordermap crate is now deprecated and the types OrderMap/Set now have a deprecation notice.
    Open source →
  19. 0.4.0 02 Feb 2018
    Release notes
    • This is the last release series for this ordermap under that name, because the crate is going to be renamed to indexmap (with types IndexMap, IndexSet) and no change in functionality!

    • The map and its associated structs moved into the map submodule of the crate, so that the map and set are symmetric

      • The iterators, Entry and other structs are now under ordermap::map::
    • Internally refactored OrderMap<K, V, S> so that all the main algorithms (insertion, lookup, removal etc) that don't use the S parameter (the hasher) are compiled without depending on S, which reduces generics bloat.

    • Entry<K, V> no longer has a type parameter S, which is just like the standard HashMap's entry.

    • Minimum Rust version requirement increased to Rust 1.18

    Open source →
  20. 0.3.5 14 Jan 2018
    Release notes
    • Documentation improvements
    Open source →
  21. 0.3.4 04 Jan 2018
    Release notes
    • The .retain() methods for OrderMap and OrderSet now traverse the elements in order, and the retained elements keep their order
    • Added new methods .sort_by(), .sort_keys() to OrderMap and .sort_by(), .sort() to OrderSet. These methods allow you to sort the maps in place efficiently.
    Open source →
  22. 0.3.3 29 Dec 2017
    Release notes
    • Document insertion behaviour better by @lucab
    • Updated dependences (no feature changes) by @ignatenkobrain
    Open source →
  23. 0.3.2 25 Nov 2017
    Release notes
    • Add OrderSet by @cuviper!
    • OrderMap::drain is now (too) a double ended iterator.
    Open source →
  24. 0.3.1 19 Nov 2017
    Release notes
    • In all ordermap iterators, forward the collect method to the underlying iterator as well.
    • Add crates.io categories.
    Open source →
  25. 0.3.0 07 Oct 2017
    Release notes
    • The methods get_pair, get_pair_index were both replaced by get_full (and the same for the mutable case).
    • Method swap_remove_pair replaced by swap_remove_full.
    • Add trait MutableKeys for opt-in mutable key access. Mutable key access is only possible through the methods of this extension trait.
    • Add new trait Equivalent for key equivalence. This extends the Borrow trait mechanism for OrderMap::get in 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.
    Open source →
  26. 0.2.13 01 Oct 2017
    Release notes
    • Fix deserialization to support custom hashers by @Techcable.
    • Add methods .index() on the entry types by @garro95.
    Open source →
  27. 0.2.12 11 Sep 2017
    Release notes
    • Add methods .with_hasher(), .hasher().
    Open source →
  28. 0.2.11 29 Aug 2017
    Release notes
    • Support ExactSizeIterator for the iterators. By @Binero.
    • Use Box<[Pos]> internally, saving a word in the OrderMap struct.
    • Serde support, with crate feature "serde-1". By @xfix.
    Open source →
  29. 0.2.10 29 Apr 2017
    Release notes
    • Add iterator .drain(..) by @stevej.
    Open source →
  30. 0.2.9 26 Mar 2017
    Release notes
    • Add method .is_empty() by @overvenus.
    • Implement PartialEq, Eq by @overvenus.
    • Add method .sorted_by().
    Open source →
  31. 0.2.8 01 Mar 2017
    Release notes
    • Add iterators .values() and .values_mut().
    • Fix compatibility with 32-bit platforms.
    Open source →
  32. 0.2.7 02 Nov 2016
    Release notes
    • Add .retain().
    Open source →
  33. 0.2.6 02 Nov 2016
    Release notes
    • Add OccupiedEntry::remove_entry and other minor entry methods, so that it now has all the features of HashMap's entries.
    Open source →
  34. 0.2.5 31 Oct 2016
    Release notes
    • Improved .pop() slightly.
    Open source →
  35. 0.2.4 22 Oct 2016
    Release notes
    • Improved performance of .insert() (#3) by @pczarn.
    Open source →
  36. 0.2.3 11 Oct 2016
    Release notes
    • Generalize Entry for now, so that it works on hashmaps with non-default hasher. However, there's a lingering compat issue since libstd HashMap does not parameterize its entries by the hasher (S typarm).
    • Special case some iterator methods like .nth().
    Open source →
  37. 0.2.2 02 Oct 2016
    Release notes
    • Disable the verbose Debug impl by default.
    Open source →
  38. 0.2.1 02 Oct 2016
    Release notes
    • Fix doc links and clarify docs.
    Open source →
  39. 0.2.0 01 Oct 2016
    Release notes
    • Add more HashMap methods & 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 return Option.
    • Experimental support as an indexed hash map! Added methods .get_index(), .get_index_mut(), .swap_remove_index(), .get_pair_index(), .get_pair_index_mut().
    Open source →
  40. 0.1.2 19 Sep 2016
    Release notes
    • Implement the 32/32 split idea for Pos which improves cache utilization and lookup performance.
    Open source →
  41. 0.1.1 16 Sep 2016
    Release notes
    • Initial release.
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive