pub struct BloomFilter { /* private fields */ }Expand description
A space-efficient probabilistic data structure for set membership testing.
Bloom filters can have false positives but never false negatives.
If contains() returns false, the item is definitely not in the set.
If contains() returns true, the item is probably in the set.
§Memory Usage
For a given number of items n and false positive rate p:
- Optimal bits:
m = -n * ln(p) / (ln(2)^2)≈n * 9.6for 1% FPR - Optimal hashes:
k = (m/n) * ln(2)≈ 7 for 1% FPR
§Example
use rustywallet_bloom::BloomFilter;
let mut filter = BloomFilter::new(100_000, 0.01);
filter.insert("address1");
assert!(filter.contains("address1"));Implementations§
Source§impl BloomFilter
impl BloomFilter
Sourcepub fn new(expected_items: usize, false_positive_rate: f64) -> Self
pub fn new(expected_items: usize, false_positive_rate: f64) -> Self
Creates a new Bloom filter optimized for the expected number of items and desired false positive rate.
§Arguments
expected_items- Expected number of items to insertfalse_positive_rate- Desired false positive rate (e.g., 0.01 for 1%)
§Example
use rustywallet_bloom::BloomFilter;
// 1 million items with 1% false positive rate
let filter = BloomFilter::new(1_000_000, 0.01);Sourcepub fn with_params(num_bits: usize, num_hashes: usize) -> Self
pub fn with_params(num_bits: usize, num_hashes: usize) -> Self
Creates a Bloom filter with explicit parameters.
Use this if you need precise control over the filter size.
§Arguments
num_bits- Total number of bits in the filternum_hashes- Number of hash functions to use
Sourcepub fn insert<T: AsRef<[u8]>>(&mut self, item: T)
pub fn insert<T: AsRef<[u8]>>(&mut self, item: T)
Inserts an item into the filter.
After insertion, contains() will always return true for this item.
Sourcepub fn contains<T: AsRef<[u8]>>(&self, item: T) -> bool
pub fn contains<T: AsRef<[u8]>>(&self, item: T) -> bool
Checks if an item might be in the filter.
Returns false if the item is definitely not in the set.
Returns true if the item is probably in the set (may be false positive).
Sourcepub fn memory_usage(&self) -> usize
pub fn memory_usage(&self) -> usize
Returns the memory usage in bytes.
Sourcepub fn num_hashes(&self) -> usize
pub fn num_hashes(&self) -> usize
Returns the number of hash functions used.
Sourcepub fn estimated_fpr(&self) -> f64
pub fn estimated_fpr(&self) -> f64
Returns the estimated false positive rate based on current fill.