#![allow(dead_code)]
use std::collections::HashSet;
#[derive(Clone, Debug, Default)]
pub struct BloomFilter {
entries: HashSet<Vec<u8>>,
}
impl BloomFilter {
pub fn new() -> Self {
Self {
entries: HashSet::new(),
}
}
pub fn from_keys<I, K>(keys: I) -> Self
where
I: IntoIterator<Item = K>,
K: Into<Vec<u8>>,
{
let mut filter = Self::new();
for key in keys {
filter.insert(key);
}
filter
}
pub fn insert(&mut self, key: impl Into<Vec<u8>>) {
self.entries.insert(key.into());
}
pub fn may_contain(&self, key: &[u8]) -> bool {
self.entries.contains(key)
}
pub fn len(&self) -> usize {
self.entries.len()
}
}