#hasher #hash #hash-set #hash-map

hash_hasher

一个专为与已哈希或类似哈希的数据一起工作而设计的哈希器

6个稳定版本

2.0.3 2020年2月28日
2.0.2 2019年12月11日
2.0.0 2019年4月28日
1.1.0 2019年4月10日
0.1.0 2016年5月19日

#256数据结构

Download history 18449/week @ 2024-01-17 16846/week @ 2024-01-24 18021/week @ 2024-01-31 20971/week @ 2024-02-07 25442/week @ 2024-02-14 21292/week @ 2024-02-21 23955/week @ 2024-02-28 21147/week @ 2024-03-06 20862/week @ 2024-03-13 23120/week @ 2024-03-20 19947/week @ 2024-03-27 23022/week @ 2024-04-03 24691/week @ 2024-04-10 25265/week @ 2024-04-17 24956/week @ 2024-04-24 18562/week @ 2024-05-01

97,909 每月下载量
180 个crate中使用 (13 个直接使用)

Apache-2.0 OR MIT

13KB
142

hash_hasher

一个专为与已哈希或类似哈希的数据一起工作而设计的 std::hash::Hasher

Documentation Build status Build Status

详细信息

提供的哈希器假定输入数据已经适合用作HashSetHashMap中的键,因此在内部做最小的工作。

除了性能优势外,它还导致HashSetHashMap变得有些确定。给定两个包含多个元素的相等HashSetHashMap,迭代它们将产生不同的顺序。通过使用hash_hasher::HashedSethash_hasher::HashedMap,如果以相同的顺序插入和/或删除相同的数据,则迭代集合将产生一致的顺序。

示例

由于为使用自定义哈希器的HashSetHashMap不可用newwith_capacity,因此可用的构造函数为default()with_hasher()with_capacity_and_hasher()

extern crate hash_hasher;

use hash_hasher::{HashBuildHasher, HashedMap, HashedSet};

let mut map = HashedMap::default();
assert!(map.insert(0, "zero").is_none());

let mut set = HashedSet::with_capacity_and_hasher(100, HashBuildHasher::default());
assert!(set.insert(0));

基准测试

包括基准测试套件,示例结果可以在AppVeyor结果Travis结果的夜间作业的末尾找到。

例如

insert_sha1s_into_set_using_default_hasher      ... bench:       1,171 ns/iter (+/- 30)
insert_sha1s_into_set_using_hash_hasher         ... bench:         533 ns/iter (+/- 9)

insert_sha256s_into_set_using_default_hasher    ... bench:       1,340 ns/iter (+/- 57)
insert_sha256s_into_set_using_hash_hasher       ... bench:         546 ns/iter (+/- 11)

insert_sha512s_into_set_using_default_hasher    ... bench:       1,804 ns/iter (+/- 2,597)
insert_sha512s_into_set_using_hash_hasher       ... bench:         704 ns/iter (+/- 22)

insert_sip_hashes_into_set_using_default_hasher ... bench:         781 ns/iter (+/- 33)
insert_sip_hashes_into_set_using_hash_hasher    ... bench:         256 ns/iter (+/- 50)

许可证

在以下两者之一下授权

由您自行决定。

贡献

除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交并包含在作品中的任何贡献,将按照上述方式双许可,不附加任何额外条款或条件。

无运行时依赖