use crate::{CuckooCache, Policy};
pub struct Builder {
pub(crate) item_size: usize,
pub(crate) nitem: usize,
pub(crate) max_displace: usize,
pub(crate) policy: Policy,
pub(crate) max_ttl: u32,
}
impl Default for Builder {
fn default() -> Self {
Self {
item_size: 64,
nitem: 1024,
max_displace: 2,
policy: Policy::Random,
max_ttl: 2_592_000, }
}
}
impl Builder {
pub fn item_size(mut self, bytes: usize) -> Self {
self.item_size = bytes;
self
}
pub fn nitem(mut self, nitem: usize) -> Self {
self.nitem = nitem;
self
}
pub fn max_displace(mut self, depth: usize) -> Self {
self.max_displace = depth;
self
}
pub fn policy(mut self, policy: Policy) -> Self {
self.policy = policy;
self
}
pub fn max_ttl(mut self, seconds: u32) -> Self {
self.max_ttl = seconds;
self
}
pub fn build(self) -> CuckooCache {
CuckooCache::from_builder(self)
}
}