OFilter is an opinionated Bloom filter implemented in Rust.
Internally, it uses an existing bloomfilter implementation, which works well, but on top of it, it does 3 things.
First, it uses 2 bloom filters, and switches from one to the other when one of them is "full". This enable a continuous usage of the filter, without ever worrying of it being filled. At some point it is a primitive implementation of an "aging" Bloom filter. But really, it does it in a quick & dirty way. The idea is just, for a toy project, to keep some cache volume within a "reasonable" range, but without worrying too much. The idea is just to never skip the latest entries.
Second, it has a thin layer to make it usable in multithreaded environments,
using a standard RwLock
.
Third, it bakes in some opinionated choices, making it a relative no-brainer to use, just give the capacity, and call it a day.
Nothing crazy, this is just a helper lib, packing some opinionated choices over already existing software libraries that work well.
For now this is a toy project, clearly NOT suitable for production use.
```rust use ofilter::Filter;
let mut filter: Filter
OFilter is licensed under the MIT license.