1use bloomlib::BloomFilter;
2
3fn main() {
4 let expected_elements = 100_000;
6
7 let fp_rate = 0.01;
9 let mut filter = BloomFilter::new(expected_elements, fp_rate);
10
11 println!("Initializing Bloom Filter...");
16 println!("Expected elements: {}", expected_elements);
17 println!("Target False Positive Rate: {}", fp_rate);
18 println!("Actual Hash Count (k): {}", filter.hash_count());
19
20 println!("Inserting values 0 to {}...", expected_elements);
22 for i in 0..expected_elements {
23 filter.insert(&i);
24 }
25
26 println!("Checking 10 known values...");
28 let mut present_count = 0;
29 for i in 0..10 {
30 if filter.contains(&i) {
31 present_count += 1;
32 }
33 }
34 println!("Found {}/10 known values (Should be 10)", present_count);
35
36 let check_range_start = expected_elements;
39 let check_range_end = expected_elements + 10_000;
40 println!(
41 "Checking range {} to {} for false positives...",
42 check_range_start, check_range_end
43 );
44
45 let mut fp_count = 0;
46 for i in check_range_start..check_range_end {
47 if filter.contains(&i) {
48 fp_count += 1;
49 }
50 }
51
52 let actual_fp_rate = fp_count as f64 / 10_000.0;
53 println!("False Positives found: {}", fp_count);
54 println!(
55 "Actual FP Rate: {:.4} (Target: {})",
56 actual_fp_rate, actual_fp_rate
57 );
58}