#bloom-filter #cuckoo #scalable #cuckoo-filter #automatic #scale #size

scalable_cuckoo_filter

一种可以根据需要自动调整大小的Cuckoo Filter变体

11个版本

0.3.2 2024年4月24日
0.3.1 2024年4月20日
0.2.4 2024年3月11日
0.2.3 2023年10月31日
0.1.1 2018年1月20日

#278数据结构

Download history 131/week @ 2024-04-29 133/week @ 2024-05-06 271/week @ 2024-05-13 148/week @ 2024-05-20 148/week @ 2024-05-27 114/week @ 2024-06-03 89/week @ 2024-06-10 98/week @ 2024-06-17 117/week @ 2024-06-24 90/week @ 2024-07-01 144/week @ 2024-07-08 86/week @ 2024-07-15 5/week @ 2024-07-22 123/week @ 2024-07-29 282/week @ 2024-08-05 235/week @ 2024-08-12

675 每月下载量
用于 seadawg

MIT 许可证

37KB
793 代码行

scalable_cuckoo_filter

scalable_cuckoo_filter Documentation Actions Status Coverage Status License: MIT

Cuckoo Filter的一种变体,其大小可以根据需要自动调整。

文档

示例

基本用法

use scalable_cuckoo_filter::ScalableCuckooFilter;

let mut filter = ScalableCuckooFilter::new(100, 0.001);
assert!(!filter.contains("foo"));
filter.insert("foo");
assert!(filter.contains("foo"));

过滤器自动增长

use scalable_cuckoo_filter::ScalableCuckooFilter;

let mut filter = ScalableCuckooFilter::new(100, 0.001);
assert_eq!(filter.capacity(), 128);

for i in 0..1000 {
    filter.insert(&i);
}
assert_eq!(filter.capacity(), 1923);

过滤器缩小

use scalable_cuckoo_filter::ScalableCuckooFilter;

let mut filter = ScalableCuckooFilter::new(1000, 0.001);
for i in 0..100 {
    filter.insert(&i);
}
assert_eq!(filter.capacity(), 1024);
assert_eq!(filter.bits(), 14336);

filter.shrink_to_fit();
for i in 0..100 {
    assert!(filter.contains(&i));
}
assert_eq!(filter.capacity(), 128);
assert_eq!(filter.bits(), 1792);

参考

依赖关系

~300–550KB
~11K SLoC