14个不稳定版本 (3个破坏性更新)

使用旧版Rust 2015

0.4.0 2019年3月13日
0.3.2 2018年8月6日
0.3.1 2018年7月28日
0.2.8 2018年1月22日
0.1.1 2016年12月25日

#1847 in 算法

Download history 1717/week @ 2024-03-13 1969/week @ 2024-03-20 2205/week @ 2024-03-27 2237/week @ 2024-04-03 2041/week @ 2024-04-10 1856/week @ 2024-04-17 1908/week @ 2024-04-24 1750/week @ 2024-05-01 2110/week @ 2024-05-08 2106/week @ 2024-05-15 1978/week @ 2024-05-22 2119/week @ 2024-05-29 2063/week @ 2024-06-05 2578/week @ 2024-06-12 2367/week @ 2024-06-19 2347/week @ 2024-06-26

9,915 每月下载量
25 个crate中使用了 (23个直接使用)

Apache-2.0

1MB
30K SLoC

C++ 17K SLoC // 0.1% comments C 8K SLoC // 0.2% comments Rust 4K SLoC Visual Studio Project 1K SLoC Assembly 306 SLoC // 0.3% comments Visual Studio Solution 62 SLoC Shell 31 SLoC // 0.2% comments Batch 17 SLoC Perl 10 SLoC

为Rust提供的一套非加密哈希函数。

示例

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"));

默认情况下,HashMap 使用选定的哈希算法以提供对 HashDoS 攻击的抵抗力。可以使用 HashMap::with_hasherHashMap::with_capacity_and_hasher 方法在每个 HashMap 基础上替换哈希算法。

它也可以与 HashMapHashSet 协同工作,充当哈希函数

use std::collections::HashSet;

use fasthash::spooky::Hash128;

let mut set = HashSet::with_hasher(Hash128);
set.insert(2);

或使用带有随机种子的 RandomState<CityHash64>

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");

依赖项