A suite of non-cryptographic hash functions for Rust, binding the smhasher.
[dependencies]
fasthash = "0.4"
use fasthash::*;
let h = city::hash64("hello world");
let h = metro::hash64_with_seed("hello world", 123);
use std::hash::{Hash, Hasher};
use fasthash::{MetroHasher, FastHasher};
fn hash<T: Hash>(t: &T) -> u64 {
// Or use any of the `*Hasher` struct's available as aliases from
// root or in their respective modules as Hasher32/64 and some 128.
let mut s = MetroHasher::default();
t.hash(&mut s);
s.finish()
}
hash(&"hello world");
use std::collections::HashSet;
use fasthash::spooky::Hash128;
let mut set = HashSet::with_hasher(Hash128);
set.insert(2);
use std::collections::HashMap;
use fasthash::RandomState;
use fasthash::city::Hash64;
let s = RandomState::<Hash64>::new();
let mut map = HashMap::with_hasher(s);
assert_eq!(map.insert(37, "a"), None);
assert_eq!(map.is_empty(), false);
map.insert(37, "b");
assert_eq!(map.insert(37, "c"), Some("b"));
assert_eq!(map[&37], "c");
- Modern Hash Functions
- City Hash
- Farm Hash
- Highway Hash
- Komi Hash new
- Lookup3
- Meow Hash new
- Metro Hash
- Mum Hash
- Murmur Hash
- mx3 Hash new
- NmHash new
- PengyHash new
- PrvHash new
- Sea Hash
- Spooky Hash
- T1ha Hash
- Umash new
- wyhash (final3)
- xx Hash with experimental XXH3 hash algorithm
- Compatibility
First install cargo-criterion:
$ cargo install cargo-criterion
Then you can use it to run Criterion-rs
benchmarks:
$ cargo criterion