https://github.com/sile/scalable_cuckoo_filter
A variant of Cuckoo Filter whose size automatically scales as necessary
https://github.com/sile/scalable_cuckoo_filter
bloom-filter cuckoo-filter data-structure rust
Last synced: 9 months ago
JSON representation
A variant of Cuckoo Filter whose size automatically scales as necessary
- Host: GitHub
- URL: https://github.com/sile/scalable_cuckoo_filter
- Owner: sile
- License: mit
- Created: 2018-01-16T12:55:23.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2025-04-23T22:33:29.000Z (about 1 year ago)
- Last Synced: 2025-10-11T03:28:47.953Z (9 months ago)
- Topics: bloom-filter, cuckoo-filter, data-structure, rust
- Language: Rust
- Homepage:
- Size: 104 KB
- Stars: 25
- Watchers: 2
- Forks: 9
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
scalable_cuckoo_filter
======================
[](https://crates.io/crates/scalable_cuckoo_filter)
[](https://docs.rs/scalable_cuckoo_filter)
[](https://github.com/sile/scalable_cuckoo_filter/actions)
[](LICENSE)
A variant of [Cuckoo Filter][cuckoo filter] whose size automatically scales as necessary.
[Documentation](https://docs.rs/scalable_cuckoo_filter)
Examples
--------
Basic usage:
```rust
use scalable_cuckoo_filter::ScalableCuckooFilter;
let mut filter = ScalableCuckooFilter::new(100, 0.001);
assert!(!filter.contains("foo"));
filter.insert("foo");
assert!(filter.contains("foo"));
```
Filter grows automatically:
```rust
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);
```
Filter shrinking:
```rust
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);
```
References
----------
- [Cuckoo Filter: Practically Better Than Bloom][cuckoo filter]
- [Scalable Bloom Filters][scalable bloom filters]
[cuckoo filter]: https://www.cs.cmu.edu/~dga/papers/cuckoo-conext2014.pdf
[scalable bloom filters]: http://haslab.uminho.pt/cbm/files/dbloom.pdf