- Notifications
You must be signed in to change notification settings - Fork322
Rust port of Google's SwissTable hash map
License
Apache-2.0, MIT licenses found
Licenses found
rust-lang/hashbrown
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
This crate is a Rust port of Google's high-performanceSwissTable hashmap, adapted to make it a drop-in replacement for Rust's standardHashMapandHashSet types.
The original C++ version of SwissTable can be foundhere, and thisCppCon talk gives an overview of how the algorithm works.
Since Rust 1.36, this is now theHashMap implementation for the Rust standardlibrary. However you may still want to use this crate instead since it worksin environments withoutstd, such as embedded systems and kernels.
- Drop-in replacement for the standard library
HashMapandHashSettypes. - Usesfoldhash as the default hasher, which is much faster than SipHash.However, foldhash doesnot provide the same level of HashDoS resistance as SipHash, so if that is important to you, you might want to consider using a different hasher.
- Around 2x faster than the previous standard library
HashMap. - Lower memory usage: only 1 byte of overhead per entry instead of 8.
- Compatible with
#[no_std](but requires a global allocator with thealloccrate). - Empty hash maps do not allocate any memory.
- SIMD lookups to scan multiple hash entries in parallel.
Add this to yourCargo.toml:
[dependencies]hashbrown ="0.16"
Then:
use hashbrown::HashMap;letmut 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 theEquivalenttrait. (enabled by default)raw-entry: Enables access to the deprecatedRawEntryAPI.inline-more: Adds inline hints to most functions, improving run-time performance at the costof compilation time. (enabled by default)default-hasher: Compiles with foldhash as default hasher. (enabled by default)allocator-api2: Enables support for allocators that supportallocator-api2. (enabled by default)
Licensed under either of:
- Apache License, Version 2.0, (LICENSE-APACHE orhttps://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT orhttps://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submittedfor inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without anyadditional terms or conditions.
About
Rust port of Google's SwissTable hash map
Resources
License
Apache-2.0, MIT licenses found
Licenses found
Security policy
Uh oh!
There was an error while loading.Please reload this page.