Crate fasthash[][src]

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::SpookyHash128;

let mut set = HashSet::with_hasher(SpookyHash128 {});
set.insert(2);

Or use RandomState<CityHash64> with a random seed.

use std::collections::HashMap;

use fasthash::RandomState;
use fasthash::city::CityHash64;

let s = RandomState::<CityHash64>::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 city::CityHasher64 as CityHasher;
pub use city::CityHasherCrc128 as CityHasherExt;
pub use farm::FarmHasher128 as FarmHasherExt;
pub use farm::FarmHasher64 as FarmHasher;
pub use lookup3::Lookup3Hasher;
pub use metro::MetroHasher128Crc_1 as MetroHasherExt;
pub use metro::MetroHasher64Crc_1 as MetroHasher;
pub use mum::MumHasher;
pub use murmur::MurmurHasher;
pub use murmur2::Murmur2Hasher_x64_64 as Murmur2Hasher;
pub use murmur3::Murmur3Hasher_x64_128 as Murmur3Hasher;
pub use murmur3::Murmur3Hasher_x64_128 as Murmur3HasherExt;
pub use sea::SeaHasher64 as SeaHasher;
pub use spooky::SpookyHasher128 as SpookyHasher;
pub use spooky::SpookyHasher128 as SpookyHasherExt;
pub use t1ha::T1ha0Hasher32Be as T1ha32BeHasher;
pub use t1ha::T1ha0Hasher32Le as T1ha32LeHasher;
pub use t1ha::T1ha1Hasher64Be as T1ha64BeHasher;
pub use t1ha::T1ha1Hasher64Le as T1ha64LeHasher;
pub use t1ha::T1ha2Hasher128 as T1haHasherExt;
pub use t1ha::T1ha2Hasher64 as T1haHasher;
pub use xx::XXHasher64 as XXHasher;

Modules

city

CityHash, a family of hash functions for strings.

farm

FarmHash, a family of hash functions.

lookup3

Lookup3, non-cryptographic hash.

metro

MetroHash, Exceptionally fast and statistically robust hash functions

mum

MumHash, Hashing functions and PRNGs based on them

murmur

Murmur, a suite of non-cryptographic hash functions that was used for hash-based lookups.

murmur2

Murmur2, a suite of non-cryptographic hash functions that was used for hash-based lookups.

murmur3

Murmur3, a suite of non-cryptographic hash functions that was used for hash-based lookups.

sea

SeaHash: A bizarrely fast hash function.

spooky

SpookyHash: a 128-bit noncryptographic hash function

t1ha

Fast Positive Hash, aka "Позитивный Хэш"

xx

xxHash - Extremely fast hash algorithm

Structs

RandomState

RandomState provides the default state for HashMap or HashSet types.

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