rustc-hash

A speedy, non-cryptographic hashing algorithm used by rustc and Firefox


Keywords
hasher, rustc, fxhash, hash
Licenses
Apache-2.0/MIT

Documentation

rustc-hash

crates.io Documentation

A speedy, non-cryptographic hashing algorithm used by rustc and Firefox. The hash map in std uses SipHash by default, which provides resistance against DOS attacks. These attacks aren't as much of a concern in the compiler so we prefer to use the quicker, non-cryptographic Fx algorithm.

The Fx algorithm is a unique one used by Firefox. It is fast because it can hash eight bytes at a time. Within rustc, it consistently outperforms every other tested algorithm (such as FNV). The collision rate is similar or slightly worse than other low-quality hash functions.

Usage

This crate provides FxHashMap and FxHashSet as collections. They are simply type aliases for their std::collection counterparts using the Fx hasher.

use rustc_hash::FxHashMap;

let mut map: FxHashMap<u32, u32> = FxHashMap::default();
map.insert(22, 44);

no_std

The std feature is on by default to enable collections. It can be turned off in Cargo.toml like so:

rustc-hash = { version = "1.2", default-features = false }