pub const DEFAULT_BF_CAPACITY: u32 = 100;
pub const DEFAULT_BF_ERROR_RATE: f64 = 0.01;
pub const DEFAULT_BF_EXPANSION: u16 = 2;
pub const DEFAULT_CF_CAPACITY: u64 = 1024;
pub const DEFAULT_CF_BUCKET_SIZE: u8 = 2;
pub const DEFAULT_CF_MAX_ITERATIONS: u16 = 20;
pub const DEFAULT_CF_EXPANSION: u16 = 1;
pub const DEFAULT_CF_PAGE_SIZE: u32 = 2048;
pub const MAX_CF_EXPANSION: u16 = 32768;
#[derive(Debug, Clone, PartialEq, bitcode::Encode, bitcode::Decode)]
pub enum BfInsert {
Capacity(u32),
Error(f64),
Expansion(u16),
NoCreate,
NonScaling,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, bitcode::Encode, bitcode::Decode)]
pub enum BfReserve {
Expansion(u16),
NonScaling,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, bitcode::Encode, bitcode::Decode)]
pub enum BloomFilterAddResult {
Ok,
Exist,
Full,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, bitcode::Encode, bitcode::Decode)]
pub enum BloomInfoType {
All,
Capacity,
Size,
Filters,
Items,
Expansion,
}
#[derive(Debug, Clone, PartialEq, bitcode::Encode, bitcode::Decode)]
pub struct BloomFilterInsertOptions {
pub capacity: u32,
pub error_rate: f64,
pub expansion: u16,
pub auto_create: bool,
}
impl Default for BloomFilterInsertOptions {
#[inline]
fn default() -> Self {
Self {
capacity: DEFAULT_BF_CAPACITY,
error_rate: DEFAULT_BF_ERROR_RATE,
expansion: DEFAULT_BF_EXPANSION,
auto_create: true,
}
}
}
#[derive(Debug, Clone, PartialEq, Eq, bitcode::Encode, bitcode::Decode)]
pub struct BloomFilterInfo {
pub capacity: u32,
pub bloom_bytes: u32,
pub n_filters: u16,
pub size: u64,
pub expansion: u16,
}
#[derive(Debug, Clone, PartialEq, Eq, bitcode::Encode, bitcode::Decode)]
pub enum CfInsert {
Capacity(u64),
NoCreate,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, bitcode::Encode, bitcode::Decode)]
pub enum CfReserve {
BucketSize(u8),
MaxIterations(u16),
Expansion(u16),
}
#[derive(Debug, Clone, PartialEq, Eq, bitcode::Encode, bitcode::Decode)]
pub struct CuckooFilterInsertOptions {
pub capacity: u64,
pub bucket_size: u8,
pub max_iterations: u16,
pub expansion: u16,
pub page_size: u32,
pub auto_create: bool,
pub nx: bool,
}
impl Default for CuckooFilterInsertOptions {
#[inline]
fn default() -> Self {
Self {
capacity: DEFAULT_CF_CAPACITY,
bucket_size: DEFAULT_CF_BUCKET_SIZE,
max_iterations: DEFAULT_CF_MAX_ITERATIONS,
expansion: DEFAULT_CF_EXPANSION,
page_size: DEFAULT_CF_PAGE_SIZE,
auto_create: true,
nx: false,
}
}
}
#[derive(Debug, Clone, PartialEq, Eq, bitcode::Encode, bitcode::Decode)]
pub struct CuckooFilterInfo {
pub size: u64,
pub num_buckets: u64,
pub num_filters: u16,
pub num_items_inserted: u64,
pub num_items_deleted: u64,
pub bucket_size: u8,
pub expansion: u16,
pub max_iterations: u16,
}