yimi_rutool/algorithms/
mod.rs

1//! Algorithms module for yimi-rutool
2//!
3//! This module provides various algorithms and data structures including:
4//! - Bloom filters (standard and counting)
5//! - Bitmap utilities
6//! - Hash functions
7//! - Parameter optimization utilities
8//!
9//! # Features
10//!
11//! - **Bloom Filters**: Memory-efficient probabilistic data structures for set membership testing
12//! - **Counting Bloom Filters**: Enhanced bloom filters supporting element removal
13//! - **Bitmap**: Efficient bit manipulation utilities
14//! - **Hash Functions**: Multiple hash algorithms for optimal distribution
15//!
16//! # Quick Start
17//!
18//! ```rust
19//! use yimi_rutool::algorithms::{BloomFilter, BloomFilterBuilder};
20//!
21//! # fn main() -> Result<(), Box<dyn std::error::Error>> {
22//! // Create a bloom filter with 1000 expected items and 1% false positive rate
23//! let mut bloom = BloomFilterBuilder::new()
24//!     .expected_items(1000)
25//!     .false_positive_rate(0.01)
26//!     .build();
27//!
28//! // Add items
29//! bloom.insert("hello");
30//! bloom.insert("world");
31//!
32//! // Test membership
33//! assert!(bloom.contains("hello"));
34//! assert!(!bloom.contains("not_exists")); // might be false positive
35//! # Ok(())
36//! # }
37//! ```
38
39pub mod bitmap;
40pub mod bloom_filter;
41pub mod hash_functions;
42
43// Re-export main types for convenience
44pub use bitmap::BitMap;
45pub use bloom_filter::{BloomFilter, BloomFilterBuilder, CountingBloomFilter};
46pub use hash_functions::{HashFunction, Hasher};
47
48#[cfg(test)]
49mod tests {
50    use super::*;
51
52    #[test]
53    fn test_module_imports() {
54        // Basic test to ensure all imports work
55        let _bloom = BloomFilterBuilder::new().build();
56    }
57}