bloom-sol 0.0.3

Counting bloom filter, aimed for solana
Documentation
#[cfg(test)]
mod tests {
    use crate::bloom_sol::struct_def::CountingBloomFilter;
    #[test]
    fn test_serialize_deserialize() {
        let mut cbf = CountingBloomFilter::new(1000, 5, false);
        cbf.insert(&"apple");
        cbf.insert(&"banana");

        let serialized = cbf.serialize();
        let deserialized = CountingBloomFilter::deserialize(&serialized).unwrap();

        assert_eq!(deserialized.size, cbf.size);
        assert_eq!(deserialized.boolean_counting, cbf.boolean_counting);
        assert_eq!(deserialized.num_hashes, cbf.num_hashes);
        assert_eq!(deserialized.counters, cbf.counters);

        assert!(deserialized.contains(&"apple"));
        assert!(deserialized.contains(&"banana"));

        // Test invalid data
        assert!(CountingBloomFilter::deserialize(&[]).is_err());
        assert!(CountingBloomFilter::deserialize(&[0u8; 15]).is_err());
        let mut invalid = serialized.clone();
        invalid.truncate(invalid.len() - 1); // Shorten by one byte
        assert!(CountingBloomFilter::deserialize(&invalid).is_err());
    }
}