pub struct BloomFilter { /* private fields */ }Expand description
Bloom filter over arbitrary byte keys.
Implementations§
Source§impl BloomFilter
impl BloomFilter
Sourcepub fn with_size_and_fp_rate(n: usize, fp: f64) -> Self
pub fn with_size_and_fp_rate(n: usize, fp: f64) -> Self
Construct a filter sized for n expected inserts at a
target false positive rate of fp.
fp must be strictly between 0 and 1; values outside
that range are clamped. n of zero produces the minimum
usable filter (64 bits, 1 hash) so callers do not need
to special-case empty corpora.
§Examples
use dyntext::bloom::BloomFilter;
let mut bf = BloomFilter::with_size_and_fp_rate(1000, 0.01);
bf.insert(b"hello");
assert!(bf.contains(b"hello"));Sourcepub fn hash_count(&self) -> u8
pub fn hash_count(&self) -> u8
Number of hash functions per insert / lookup.
Sourcepub fn insert(&mut self, key: &[u8])
pub fn insert(&mut self, key: &[u8])
Insert key into the filter.
After this call, Self::contains returns true for
key. Repeated inserts of the same key are idempotent.
Sourcepub fn contains(&self, key: &[u8]) -> bool
pub fn contains(&self, key: &[u8]) -> bool
Test whether key MAY be present.
Returns false only if key has provably never been
inserted (no false negatives). Returns true if every
hash bit is set, which can happen either because key
was inserted or because the bits were collectively set
by other keys (false positive).
Sourcepub fn false_positive_rate(&self, n_inserted: usize) -> f64
pub fn false_positive_rate(&self, n_inserted: usize) -> f64
Theoretical false positive rate after n_inserted
distinct insertions.
Formula: (1 - exp(-k * n / m))^k, where k is the
hash count and m is the bit count. Returns 0 for an
empty filter (no inserts) and approaches 1 for a
fully saturated filter.
Trait Implementations§
Source§impl Clone for BloomFilter
impl Clone for BloomFilter
Source§fn clone(&self) -> BloomFilter
fn clone(&self) -> BloomFilter
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for BloomFilter
impl Debug for BloomFilter
Source§impl<'de> Deserialize<'de> for BloomFilter
impl<'de> Deserialize<'de> for BloomFilter
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for BloomFilter
impl RefUnwindSafe for BloomFilter
impl Send for BloomFilter
impl Sync for BloomFilter
impl Unpin for BloomFilter
impl UnsafeUnpin for BloomFilter
impl UnwindSafe for BloomFilter
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more