4 个稳定版本
2.0.0 | 2024 年 6 月 18 日 |
---|---|
1.2.0 |
|
1.1.0 | 2020 年 2 月 8 日 |
1.0.1 | 2018 年 5 月 28 日 |
1.0.0 | 2018 年 5 月 24 日 |
在 算法 中排名第 5
每月下载量 6,467,831
在 12,062 个crate (直接使用 758 个) 中使用
25KB
372 行
rustc-hash
由 rustc 使用的快速非加密哈希算法。在 std
中的哈希表默认使用 SipHash,这可以提供防止 DOS 攻击的能力。这些攻击在编译器中不是问题,所以我们更愿意使用更快、非加密的哈希算法。
这个包最初提供的哈希算法是从 Firefox 中取出的,因此它提供的哈希器被称为 FxHasher。为了保持向后兼容性,保留了此名称,但底层的哈希算法已经更换。哈希器的当前设计是一个多项式哈希,后跟单个位旋转,以及受 wyhash 启发的字符串/切片压缩函数,这两个都是由 Orson Peters 设计的。
对于 rustc
,我们已经尝试了多种不同的哈希算法。哈希速度至关重要,尤其是对于单个整数。在更高质量的哈希上花费更多的 CPU 周期并不能减少足够的哈希冲突,以使编译器在实际基准测试中更快。
使用方法
这个包提供了 FxHashMap
和 FxHashSet
作为集合。它们只是使用 Fx 哈希器对应于 std::collection
的类型别名。
use rustc_hash::FxHashMap;
let mut map: FxHashMap<u32, u32> = FxHashMap::default();
map.insert(22, 44);
无 std
默认启用 std
功能以启用集合。可以在 Cargo.toml
中关闭它,如下所示
rustc-hash = { version = "2.0", default-features = false }
依赖关系
~74KB