Crate rustywallet_bloom

Crate rustywallet_bloom 

Source
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§

BloomFilter
A space-efficient probabilistic data structure for set membership testing.
CountingBloomFilter
A counting Bloom filter that supports removal of items.

Enums§

CountingBloomError
Error type for counting bloom filter operations.