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
Equivalent
trait, which offers more flexible equality definitions between borrowed and owned versions of keys. - The
MutableKeys
trait, 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
new
andwith_capacity
is unavailable withoutstd
.
Use methodsIndexMap::default
,with_hasher
,with_capacity_and_hasher
instead. 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§
- map
IndexMap
is a hash table where the iteration order of the key-value pairs is independent of the hash values of the keys.- set
- A hash set implemented using
IndexMap
Macros§
- indexmap
- Create an
IndexMap
from a list of key-value pairs - indexset
- Create an
IndexSet
from a list of values
Traits§
- Equivalent
- Key equivalence trait.