Rotating Bloom Filter
A probabilistic data structure that maintains recent items using a dual-buffer rotation mechanism.
RotatingBloomFilter provides membership testing for recently inserted items, with older items
automatically rotating out. Items are guaranteed to be retained for at least a minimum retention
period, typically remaining for up to twice that duration.
Features
- Time-limited tracking: Only maintains membership information for recently inserted items
- Type flexible: Works with any hashable type
How it works
The filter maintains two internal Bloom filters:
- Current buffer: Holds items from previous rotations plus ongoing insertions
- Next buffer: Accumulates new insertions until rotation
When the minimum retention threshold is reached, the next buffer becomes the new current buffer, and a new next buffer is created.
Example
use RotatingBloomFilter;
use OsRng;
let mut filter = new;
filter.insert;
assert!;
// "hello" will be retained for at least 1000 insertions, but sticks around to 2000 insertions if
// the filter continues to be used.