1use std::hash::Hash;
2
3mod buckets;
4mod classic;
5mod counting;
6mod hash;
7mod stable;
8
9pub use crate::classic::Filter as ClassicBloomFilter;
10pub use crate::counting::Filter as CountingBloomFilter;
11pub use crate::hash::{BuildHashKernels, DefaultBuildHashKernels, DefaultBuildHasher, DefaultHashKernels, HashKernels};
12pub use crate::stable::Filter as StableBloomFilter;
13
14pub trait BloomFilter {
15 fn insert<T: Hash>(&mut self, item: &T);
16 fn contains<T: Hash>(&self, item: &T) -> bool;
17 fn reset(&mut self);
18}
19
20pub trait RemovableBloomFilter {
21 fn remove<T: Hash>(&mut self, item: &T);
22}
23
24pub trait UpdatableBloomFilter {
25 fn update(&mut self, raw_data: &[u8]);
27}