Expand description
§rustywallet-bloom
Fast and memory-efficient Bloom Filter implementations optimized for large datasets like cryptocurrency address lookups.
§Features
- Standard Bloom Filter: Memory efficient (~1.2 bytes per item at 1% FPR)
- Counting Bloom Filter: Supports removal of items (4x memory of standard)
- Fast: Uses FNV-1a hash with double hashing technique
- No dependencies: Pure Rust implementation
- Streaming insert: Load millions of items efficiently
§Standard Bloom Filter
use rustywallet_bloom::BloomFilter;
// Create filter for 1 million items with 1% false positive rate
let mut bloom = BloomFilter::new(1_000_000, 0.01);
bloom.insert("1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa");
bloom.insert("bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4");
assert!(bloom.contains("1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa"));
assert!(!bloom.contains("not_in_filter")); // probably false§Counting Bloom Filter
Supports removal of items:
use rustywallet_bloom::CountingBloomFilter;
let mut filter = CountingBloomFilter::new(100_000, 0.01);
filter.insert("address1");
filter.insert("address2");
assert!(filter.contains("address1"));
// Remove an item
filter.remove("address1").unwrap();
assert!(!filter.contains("address1"));
assert!(filter.contains("address2"));Modules§
- prelude
- Prelude module for convenient imports
Structs§
- Bloom
Filter - A space-efficient probabilistic data structure for set membership testing.
- Counting
Bloom Filter - A counting Bloom filter that supports removal of items.
Enums§
- Counting
Bloom Error - Error type for counting bloom filter operations.