Expand description
OFilter is a fast thread-safe Bloom filter.
§Examples
Basic Bloom filter:
use ofilter::Bloom;
let mut filter: Bloom<usize> = Bloom::new(100);
filter.set(&42);
assert!(filter.check(&42));
Thread-safe version:
use ofilter::SyncBloom;
// does not need to be `mut`
let filter: SyncBloom<usize> = SyncBloom::new(100);
filter.set(&42);
assert!(filter.check(&42));
Streaming Bloom filter:
use ofilter::Stream;
use std::collections::HashSet;
let mut set: HashSet<usize> = HashSet::new();
let mut filter: Stream<usize> = Stream::new(100);
for i in 0..1_000 {
for j in 0..1_000 {
let item = i * 1_000 + j;
filter.set(&item);
set.insert(item);
}
set.retain(|x| filter.check(x));
}
println!("{}", set.len());
// Out of 1 million entries, only a few hundreds left
assert!(set.len() < 500);
Thread-safe streaming version:
use ofilter::SyncStream;
use std::collections::HashSet;
let mut set: HashSet<usize> = HashSet::new();
// does not need to be `mut`
let filter: SyncStream<usize> = SyncStream::new(100);
for i in 0..1_000 {
for j in 0..1_000 {
let item = i * 1_000 + j;
filter.set(&item);
set.insert(item);
}
set.retain(|x| filter.check(x));
}
println!("{}", set.len());
// Out of 1 million entries, only a few hundreds left
assert!(set.len() < 500);
Structs§
- BitVec
- Bit-Precision Dynamic Array
- Bloom
- Bloom filter.
- Params
- Parameters used to build bloom filters.
- Stream
- Streaming Bloom filter.
- Sync
Bloom - Thread-safe Bloom filter.
- Sync
Stream - Thread-safe streaming Bloom filter.
Constants§
- BUG_
REPORT_ URL - URL to report bugs.
- DEFAULT_
BIT_ LEN - Default size of the bit vector, in bits.
- DEFAULT_
FALSE_ P - Default false positive rate.
- DEFAULT_
NB_ HASH - Default number of hash functions.
- DEFAULT_
NB_ ITEMS - Default number of items the filter should contain.