Expand description
§quickbloom
An industry-grade, highly scalable Bloom filter library for Rust.
§Architecture Overview
| Type | Concurrency | Growth | Persistence |
|---|---|---|---|
BloomFilter | single-threaded (or wrap in ConcurrentBloomFilter) | fixed | ✅ via path |
ScalableBloomFilter | single-threaded (or wrap in ConcurrentBloomFilter) | ✅ auto | ✅ via path |
AtomicBloomFilter | ✅ fully lock-free (BETA) | fixed | manual |
§Bloom Mode
Standard BloomFilter supports two internal layouts selected via BloomMode:
BloomMode::Standard– classic flat bit-array layout.BloomMode::Blocked– partitions the bit array into 512-bit (64-byte) blocks. Every hash for a single item maps exclusively within one block, ensuring eachinsertandcontainstouches exactly one CPU cache line. This often doubles throughput on modern hardware.
§Feature Summary
BloomConfig– mathematically optimal sizing from(n, fp_rate).- Fast
ahash-based enhanced double hashing. - Seamless auto-save/load via user-supplied file paths.
- CI-tested,
#![forbid(unsafe_code)].
§Example
use quickbloom::{BloomConfig, BloomMode, BloomFilter};
// Size automatically computed for 1M items at 1% FP rate
let config = BloomConfig::new(1_000_000, 0.01);
let (size, hashes) = config.parameters();
// Cache-friendly blocked layout
let mut filter = BloomFilter::with_mode(size, hashes, BloomMode::Blocked);
filter.insert(&"alice");
assert!(filter.contains(&"alice"));
assert!(!filter.contains(&"bob"));Structs§
- Atomic
Bloom Filter - A fully lock-free, thread-safe Bloom filter backed by
AtomicU8bytes. - Bloom
Config - Configuration for creating a Bloom filter.
- Bloom
Filter - A fast, standard Bloom filter with optional cache-friendly blocked layout and automatic file-based persistence.
- Concurrent
Bloom Filter - A thread-safe wrapper around any Bloom filter using
Arc<RwLock>. - Scalable
Bloom Filter - A scalable Bloom filter.
Enums§
- Bloom
Mode - The internal memory layout used by a
BloomFilter.
Type Aliases§
- Bloom
BitVec - Specific bit vector type used internally.