pub struct CuckooCache { /* private fields */ }Expand description
A pre-allocated cache that uses cuckoo hashing with D=4 candidate positions per key. Items are stored inline in fixed-size slots within a contiguous array.
Implementations§
Source§impl CuckooCache
impl CuckooCache
Sourcepub fn builder() -> Builder
pub fn builder() -> Builder
Returns a new Builder for configuring a CuckooCache.
use cuckoo_cache::CuckooCache;
let cache = CuckooCache::builder()
.nitem(4096)
.item_size(64)
.build();Sourcepub fn get(&mut self, key: &[u8]) -> Option<Item>
pub fn get(&mut self, key: &[u8]) -> Option<Item>
Look up an item by key.
use cuckoo_cache::CuckooCache;
use std::time::Duration;
let mut cache = CuckooCache::builder().build();
assert!(cache.get(b"coffee").is_none());
cache.insert(b"coffee", b"strong", Duration::ZERO).unwrap();
let item = cache.get(b"coffee").unwrap();
assert_eq!(item.value(), b"strong");Sourcepub fn insert<'a, T: Into<Value<'a>>>(
&mut self,
key: &[u8],
value: T,
ttl: Duration,
) -> Result<(), CuckooCacheError>
pub fn insert<'a, T: Into<Value<'a>>>( &mut self, key: &[u8], value: T, ttl: Duration, ) -> Result<(), CuckooCacheError>
Insert an item into the cache.
use cuckoo_cache::CuckooCache;
use std::time::Duration;
let mut cache = CuckooCache::builder().build();
cache.insert(b"drink", b"coffee", Duration::ZERO).unwrap();
let item = cache.get(b"drink").unwrap();
assert_eq!(item.value(), b"coffee");
cache.insert(b"drink", b"whisky", Duration::ZERO).unwrap();
let item = cache.get(b"drink").unwrap();
assert_eq!(item.value(), b"whisky");Sourcepub fn delete(&mut self, key: &[u8]) -> bool
pub fn delete(&mut self, key: &[u8]) -> bool
Remove the item with the given key.
use cuckoo_cache::CuckooCache;
use std::time::Duration;
let mut cache = CuckooCache::builder().build();
assert!(!cache.delete(b"coffee"));
cache.insert(b"coffee", b"strong", Duration::ZERO).unwrap();
assert!(cache.delete(b"coffee"));
assert!(cache.get(b"coffee").is_none());Sourcepub fn wrapping_add(
&mut self,
key: &[u8],
rhs: u64,
) -> Result<Item, CuckooCacheError>
pub fn wrapping_add( &mut self, key: &[u8], rhs: u64, ) -> Result<Item, CuckooCacheError>
Perform a wrapping addition on a numeric value.
Sourcepub fn saturating_sub(
&mut self,
key: &[u8],
rhs: u64,
) -> Result<Item, CuckooCacheError>
pub fn saturating_sub( &mut self, key: &[u8], rhs: u64, ) -> Result<Item, CuckooCacheError>
Perform a saturating subtraction on a numeric value.
Auto Trait Implementations§
impl Freeze for CuckooCache
impl RefUnwindSafe for CuckooCache
impl Send for CuckooCache
impl Sync for CuckooCache
impl Unpin for CuckooCache
impl UnsafeUnpin for CuckooCache
impl UnwindSafe for CuckooCache
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more