1 个不稳定版本
0.1.0 | 2023年10月8日 |
---|
#1818 在 数据结构
10KB
146 代码行
Rust中的Bloom Filter
在Rust中实现的一个简单、鲁棒且高效的全局过滤器数据结构。
概述
Bloom Filter是一种概率数据结构,可以测试一个元素是否属于某个集合。它返回“可能在集合中”或“肯定不在集合中”。存在误报匹配的可能性,但不存在误报。
特性
- 高效且无误报的成员资格测试。
- 可配置的误报概率。
用法
创建Bloom Filter
创建一个新的Bloom Filter
let bloom_filter_result = BloomFilter::new(1000, 0.01);
match bloom_filter_result {
Ok(mut bloom_filter) => {
// Use the bloom filter...
},
Err(e) => {
println!("Error creating Bloom Filter: {}", e);
}
}
这尝试创建一个针对1000个项和1%误报概率进行优化的新Bloom Filter。请确保处理潜在的错误。
添加项
将项添加到Bloom Filter
bloom_filter.add(&"hello");
检查成员资格
检查一个项是否存在于Bloom Filter中
if bloom_filter.check(&"hello") {
println!("'hello' might be in the set!");
} else {
println!("'hello' is definitely not in the set.");
}
局限性
- 当前实现使用在Bloom Filter创建期间确定的倍数散列。散列函数的数量基于所需的误报率和期望的项数。
- 虽然可以通过调整参数来最小化误报率,但无法完全消除。
- 应适当处理诸如无效的误报概率或内存分配失败之类的错误。
依赖关系
~2MB
~37K SLoC