#bloom-filter #结构 #数据 #鲁棒 #概率 #误报

frbf

在Rust中实现的一个简单、鲁棒且高效的全局过滤器数据结构

1 个不稳定版本

0.1.0 2023年10月8日

#1818数据结构

MIT 许可证

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