#hash #hash-set #hash-map #wrapper #hashable

hashable-map

HashMap和HashSet的包装器,实现了Hash

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

0.4.0 2024年6月30日
0.3.1 2024年6月30日
0.2.2 2024年6月14日
0.1.0 2024年6月9日

数据结构 中排名第 1468

Download history 67/week @ 2024-06-03 327/week @ 2024-06-10 37/week @ 2024-06-17 269/week @ 2024-06-24 115/week @ 2024-07-01 2/week @ 2024-07-22

每月下载量 386

MIT/Apache

17KB
369

可哈希Map

该软件包提供了简单的包装器 HashableMapHashableSet,它们在 std::collections::HashMapstd::collections::HashSet 周围实现 Hash,无需任何额外依赖。

实现细节

HashableMapHashableSetHash 实现遵循所需的属性

k1 == k2 -> hash(k1) == hash(k2)

换句话说,如果两个键相等,它们的哈希也必须相等。

实现是泛型,适用于所有 BuildHasher 实现,这意味着您可以使用默认的 RandomState 以及其他哈希构建器实现,例如 FxBuildHasher。唯一的要求是哈希构建器构建的哈希器实现 Default,并且默认实现在不同实例中产生相同的哈希。这一要求是由于该软件包使用由哈希构建器构建的默认哈希器实例来计算条目的哈希。更正式地说,为了构建条目的哈希,我们使用 D::default() 的实例,其中 S: BuildHasher<Hasher = D>, D: Hasher + Default。然后使用交换运算符 wrapping_add 将条目的哈希相加,这样不同的条目顺序仍然会产生相同的哈希,这是满足上述 Hash 属性的要求。

Serde支持

此软件包具有启用序列化和反序列化支持的选项,通过启用 serde 功能。

依赖项

~170KB