use std::{convert::AsRef, fmt::Debug, io::Write}; use serde::Serialize; use tuwunel_core::{arrayvec::ArrayVec, implement}; use crate::{keyval::KeyBuf, ser}; #[implement(super::Map)] #[inline] pub fn del(&self, key: K) where K: Serialize + Debug, { let mut buf = KeyBuf::new(); self.bdel(key, &mut buf); } #[implement(super::Map)] #[inline] pub fn adel(&self, key: K) where K: Serialize + Debug, { let mut buf = ArrayVec::::new(); self.bdel(key, &mut buf); } #[implement(super::Map)] #[tracing::instrument(skip(self, buf), level = "trace")] pub fn bdel(&self, key: K, buf: &mut B) where K: Serialize + Debug, B: Write + AsRef<[u8]>, { let key = ser::serialize(buf, key).expect("failed to serialize deletion key"); self.remove(key); }