Rust port of Google's SwissTable hash map
2,993
stars
1,244
commits
Rust
primary language
Sep 6, 2026
updated
This crate is a Rust port of Google's high-performance SwissTable hash map,
adapted to make it a drop-in replacement for Rust's standard HashMap and
HashSet types.
The original C++ version of SwissTable can be found here, and this CppCon talk gives an overview of how the algorithm works.
Since Rust 1.36, the Rust standard library has adopted this implementation for
HashMap, using its own default hasher (see
std::hash::DefaultHasher).
However you may still want to use this crate instead since it works in
environments without std, such as embedded systems and kernels.
HashMap and HashSet types.HashMap.#[no_std] (but requires a global allocator with the alloc
crate).Add this to your Cargo.toml:
[dependencies]
hashbrown = "0.17"
Then:
use hashbrown::HashMap;
let mut map = HashMap::new();
map.insert(1, "one");
This crate has the following Cargo features:
nightly: Enables nightly-only features including: #[may_dangle].serde: Enables serde serialization support.rayon: Enables rayon parallel iterator support.equivalent: Allows comparisons to be customized with the Equivalent trait.
(enabled by default)raw-entry: Enables access to the deprecated RawEntry API.inline-more: Adds inline hints to most functions, improving run-time
performance at the cost of compilation time. (enabled by default)default-hasher: Compiles with foldhash as default hasher. (enabled by
default)allocator-api2: Enables support for allocators that support
allocator-api2. (enabled by default)Licensed under either of:
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
(top 30 of 123)
Rust
99.4%
Rust port of Google's SwissTable hash map
2,993
stars
1,244
commits
Rust
primary language
Sep 6, 2026
updated
This crate is a Rust port of Google's high-performance SwissTable hash map,
adapted to make it a drop-in replacement for Rust's standard HashMap and
HashSet types.
The original C++ version of SwissTable can be found here, and this CppCon talk gives an overview of how the algorithm works.
Since Rust 1.36, the Rust standard library has adopted this implementation for
HashMap, using its own default hasher (see
std::hash::DefaultHasher).
However you may still want to use this crate instead since it works in
environments without std, such as embedded systems and kernels.
HashMap and HashSet types.HashMap.#[no_std] (but requires a global allocator with the alloc
crate).Add this to your Cargo.toml:
[dependencies]
hashbrown = "0.17"
Then:
use hashbrown::HashMap;
let mut map = HashMap::new();
map.insert(1, "one");
This crate has the following Cargo features:
nightly: Enables nightly-only features including: #[may_dangle].serde: Enables serde serialization support.rayon: Enables rayon parallel iterator support.equivalent: Allows comparisons to be customized with the Equivalent trait.
(enabled by default)raw-entry: Enables access to the deprecated RawEntry API.inline-more: Adds inline hints to most functions, improving run-time
performance at the cost of compilation time. (enabled by default)default-hasher: Compiles with foldhash as default hasher. (enabled by
default)allocator-api2: Enables support for allocators that support
allocator-api2. (enabled by default)Licensed under either of:
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
(top 30 of 123)
Rust
99.4%