#hash-set #hash-map #hash #pi #xx-hash #hashing

pi_hash

提供统一的Hasher、HashMap和HashSet,使用的哈希算法可以通过编译条件确定

2个版本

0.1.1 2022年2月28日
0.1.0 2022年2月28日

#2031算法

Download history 101/week @ 2024-03-13 188/week @ 2024-03-20 232/week @ 2024-03-27 119/week @ 2024-04-03 116/week @ 2024-04-10 120/week @ 2024-04-17 121/week @ 2024-04-24 136/week @ 2024-05-01 102/week @ 2024-05-08 114/week @ 2024-05-15 122/week @ 2024-05-22 92/week @ 2024-05-29 89/week @ 2024-06-05 96/week @ 2024-06-12 127/week @ 2024-06-19 88/week @ 2024-06-26

每月403次下载
用于 41 个crate(直接使用24个)

MIT/Apache

5KB

提供统一的Hasher、HashMap、HashSet

可通过编译条件,决定使用的hash算法。支持xxhash、fxhash、defaulthash


lib.rs:

本模块提供XHashMapXHashSet两种容器,来替代标准库的HashMap和HashSet。 意在鼓励外部库大多数时候都使用本模块提供的XHashMap、XHashSet来替代标准库或其它库的HashMap和HashSet。 使用本模块的优势在于,库的编写者,在使用这两种容器时,不用关心使用哪种hash算法 而由具体的应用程序关心,应用程序可以设置不同的feature,来确定自己需要哪种hash算法。

例如: 一个名为gui的库,使用了本模块的XHashMap;

另一个库gui_web,是对gui的再次封装,意在编译为asm供web平台使用,考虑到asm中,64位整数的计算速度明显低于32位,因此 希望使用一个32位的hash算法,另外,gui的hashMap,大部分的key的长度, 使用xxhash对比其它hash算法会更快(不同的hash算法,在不同的场景中有着自身的优势和劣势),因此,gui_web决定使用32位的xxhash gui_web仅需在在Cargo.toml中添加featurexxhash,就能控制gui库使用的HashMap的Hash算法位xxhash 至于要使用32位的xxhash,本模块可以根据编译目标,自动选择字长。如要编译为wasm、asm,会自动选择32位的算法 当然,也有可能,在应用的过程中,发现xxhash不时一个好的选择,你可以低成本的更换算法(只需要修改feature

目前,本库支持的hash算法有限,仅支持了xxhash、fxhash。

依赖

~280KB