[−][src]Crate fasthash
A suite of non-cryptographic hash functions for Rust.
Example
use std::hash::{Hash, Hasher}; use fasthash::{metro, MetroHasher}; fn hash<T: Hash>(t: &T) -> u64 { let mut s: MetroHasher = Default::default(); t.hash(&mut s); s.finish() } let h = metro::hash64(b"hello world\xff"); assert_eq!(h, hash(&"hello world"));
By default, HashMap
uses a hashing algorithm selected to
provide resistance against HashDoS
attacks.
The hashing algorithm can be replaced on a per-HashMap
basis
using the HashMap::with_hasher
or
HashMap::with_capacity_and_hasher
methods.
It also cowork with HashMap
or HashSet
, act as a hash function
use std::collections::HashSet; use fasthash::spooky::Hash128; let mut set = HashSet::with_hasher(Hash128); set.insert(2);
Or use RandomState<CityHash64>
with a random seed.
use std::collections::HashMap; use fasthash::{city, RandomState}; let s = RandomState::<city::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");
Re-exports
pub use farm::Hasher128 as FarmHasherExt; |
pub use farm::Hasher64 as FarmHasher; |
pub use lookup3::Hasher32 as Lookup3Hasher; |
pub use mum::Hasher64 as MumHasher; |
pub use murmur::Hasher32 as MurmurHasher; |
pub use murmur3::Hasher32 as Murmur3Hasher; |
pub use sea::Hasher64 as SeaHasher; |
pub use spooky::Hasher128 as SpookyHasherExt; |
pub use spooky::Hasher64 as SpookyHasher; |
pub use t1ha::t1ha0; |
pub use t1ha::t1ha1; |
pub use t1ha::t1ha2; |
pub use t1ha2::Hasher128 as T1haHasherExt; |
pub use t1ha2::Hasher64 as T1haHasher; |
pub use xx::Hasher64 as XXHasher; |
pub use murmur2::Hasher64_x64 as Murmur2Hasher; |
pub use murmur3::Hasher128_x64 as Murmur3HasherExt; |
pub use city::Hasher64 as CityHasher; |
pub use city::crc::Hasher128 as CityHasherExt; |
pub use metro::crc::Hasher128_1 as MetroHasherExt; |
pub use metro::crc::Hasher64_1 as MetroHasher; |
Modules
city |
|
farm |
|
lookup3 |
|
metro |
|
mum |
|
murmur |
|
murmur2 |
|
murmur3 |
|
sea |
|
spooky |
|
t1ha | Fast Positive Hash, aka "Позитивный Хэш" |
xx |
|
Structs
RandomState |
|
Seed | Generate hash seeds |
Traits
BufHasher | Hasher in the buffer mode for short key |
FastHash | Fast non-cryptographic hash functions |
FastHasher | Fast non-cryptographic hasher |
Fingerprint | Generate a good, portable, forever-fixed hash value |
HasherExt | A trait which represents the ability to hash an arbitrary stream of bytes. |
StreamHasher | Hasher in the streaming mode without buffer |