12 个版本
使用旧的 Rust 2015
0.3.2 | 2018 年 8 月 6 日 |
---|---|
0.3.1 | 2018 年 7 月 28 日 |
0.2.8 | 2018 年 1 月 22 日 |
0.2.6 | 2017 年 5 月 10 日 |
0.1.0 | 2016 年 12 月 25 日 |
#2075 in 算法
9,719 每月下载量
在 26 个 crate 中使用 (通过 fasthash)
1MB
28K SLoC
包含 (ELF 可执行文件/库, 2KB) src/smhasher/fhtw-elf64.o, (ELF 可执行文件/库, 2KB) src/smhasher/falkhash-elf64.o, (Mach-o 可执行文件, 1KB) src/smhasher/falkhash-macho64.o, (Mach-o 可执行文件, 2KB) src/smhasher/fhtw-macho64.o
rust-fasthash
Rust 非加密散列函数套件,绑定 smhasher.
用法
[dependencies]
fasthash = "0.4"
hash
和 hash_with_seed
函数
use fasthash::*;
let h = city::hash64("hello world");
let h = metro::hash64_with_seed("hello world", 123);
std::hash::Hash
use std::hash::{Hash, Hasher};
use fasthash::{MetroHasher, FastHasher};
fn hash<T: Hash>(t: &T) -> u64 {
// Or use any of the `*Hasher` struct's available as aliases from
// root or in their respective modules as Hasher32/64 and some 128.
let mut s = MetroHasher::default();
t.hash(&mut s);
s.finish()
}
hash(&"hello world");
HashMap
和 HashSet
use std::collections::HashSet;
use fasthash::spooky::Hash128;
let mut set = HashSet::with_hasher(Hash128);
set.insert(2);
RandomState
use std::collections::HashMap;
use fasthash::RandomState;
use fasthash::city::Hash64;
let s = RandomState::<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");
散列函数
- 现代散列函数
- City Hash
- Farm Hash
- Highway Hash
- Komi Hash 新
- Lookup3
- Meow Hash 新
- Metro Hash
- Mum Hash
- Murmur Hash
- mx3 Hash 新
- NmHash 新
- PengyHash 新
- PrvHash 新
- Sea Hash
- Spooky Hash
- T1ha Hash
- Umash 新
- wyhash (final3)
- xx Hash 使用 实验性 XXH3 哈希算法
- 兼容性
基准测试
首先安装 cargo-criterion
$ cargo install cargo-criterion
然后您可以使用它来运行 Criterion-rs
基准测试
$ cargo criterion