Seabloom
Yet Another Bloom Filter, this one using seahash.
Install / Use
/learn @ceejbot/SeabloomREADME
seabloom
Yet Another Bloom Filter, this one using seahash.
Usage
extern crate seabloom;
let mut filter = Seabloom::create(2000);
assert_eq!(filter.has("cat"), false);
filter.add("cat");
assert_eq!(filter.has("cat"), true);
filter.add_list(vec!["cat", "jaguar", "lion", "tiger", "leopard"]);
assert_eq!(filter.has("caracal"), false);
assert_eq!(filter.has("jaguar"), true);
filter.clear();
assert_eq!(filter.has("cat"), false);
API
Seabloom::create(item_count: u32) -> Seabloom
Create a Bloom filter sized for the given item count with an error rate of 0.5% (0.005). Seeds for the hashing functions will be generated randomly for you.
Seabloom::create_optimal(item_count: u32, error_rate: f32) -> Seabloom
Create a Bloom filter sized for the given item count with the specified error rate. Seeds for the hashing functions will be generated randomly for you.
Seabloom::create_random_seeds(bitcount: u64, hashcount: u32) -> Seabloom
Create a Bloom filter with the given number of bits for storage and the given number of hashing functions. Seeds for the hashing functions will be generated randomly for you. You probably don't want to use this function; use create instead.
Seabloom::new(bitcount: u64, seeds: Vec<u64>) -> Seabloom
Create a Bloom filter with the given number of bits for storage and hashing functions using the seeds you provide. You need 4x the number of seeds as hashing functions for seahash's current API.
filter.clear()
Clear the filter.
filter.add(item: &str)
Add a string to the filter.
filter.add_bytes(bytes: &[u8])
Add an item represented by the given bytes to the filter.
filter.add_list(items: Vec<&str>)
Add a list of strings to the filter.
filter.has(item: &str) -> bool
Check to see if the given string is in the filter. Provides a definitive no or a maybe-yes.
filter.has_bytes(bytes: &[u8]) -> bool
Check to see if the given pile-o-bytes is in the filter. Provides a definitive no or a maybe-yes.
License
ISC.
Related Skills
node-connect
349.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
109.4kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
349.0kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
349.0kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
