Expand description
IndexMap is a hash table where the iteration order of the key-value
pairs is independent of the hash values of the keys.
IndexSet is a corresponding hash set using the same implementation and
with similar properties.
Feature Highlights
IndexMap and IndexSet are drop-in compatible with the std HashMap
and HashSet, but they also have some features of note:
- The ordering semantics (see their documentation for details)
- Sorting methods and the
.pop()methods. - The
Equivalenttrait, which offers more flexible equality definitions between borrowed and owned versions of keys. - The
MutableKeystrait, which gives opt-in mutable access to hash map keys.
Rust Version
This version of indexmap requires Rust 1.18 or later, or 1.30+ for
development builds, and Rust 1.36+ for using with alloc (without std),
see below.
The indexmap 1.x release series will use a carefully considered version upgrade policy, where in a later 1.x version, we will raise the minimum required Rust version.
No Standard Library Targets
From Rust 1.36, this crate supports being built without std, requiring
alloc instead. This is enabled automatically when it is detected that
std is not available. There is no crate feature to enable/disable to
trigger this. It can be tested by building for a std-less target.
- Creating maps and sets using
newandwith_capacityis unavailable withoutstd.
Use methodsIndexMap::default,with_hasher,with_capacity_and_hasherinstead. A no-std compatible hasher will be needed as well, for example from the cratetwox-hash. - Macros
indexmap!andindexset!are unavailable withoutstd.
Re-exports
Modules
IndexMap is a hash table where the iteration order of the key-value
pairs is independent of the hash values of the keys.
A hash set implemented using IndexMap
Macros
Create an IndexMap from a list of key-value pairs
Create an IndexSet from a list of values
Traits
Key equivalence trait.