use crate::CuckooCacheError;
use keyvalue::{TinyItem, Value};
pub struct Item {
raw: TinyItem,
}
impl Item {
pub(crate) fn new(raw: TinyItem) -> Self {
Self { raw }
}
pub fn key(&self) -> &[u8] {
self.raw.key()
}
pub fn value(&self) -> Value<'_> {
self.raw.value()
}
pub fn expire(&self) -> u32 {
self.raw.expire()
}
pub fn wrapping_add(&mut self, rhs: u64) -> Result<(), CuckooCacheError> {
self.raw
.wrapping_add(rhs)
.map_err(|_| CuckooCacheError::NotNumeric)
}
pub fn saturating_sub(&mut self, rhs: u64) -> Result<(), CuckooCacheError> {
self.raw
.saturating_sub(rhs)
.map_err(|_| CuckooCacheError::NotNumeric)
}
}
impl std::fmt::Debug for Item {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.debug_struct("Item")
.field("expire", &self.expire())
.field("raw", &self.raw)
.finish()
}
}