Split database::Map put/del from insert.rs and remove.rs

Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
Jason Volk
2025-07-25 04:10:30 +00:00
parent 0fcb072239
commit 7bdd4065c8
5 changed files with 231 additions and 214 deletions

37
src/database/map/del.rs Normal file
View File

@@ -0,0 +1,37 @@
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<K>(&self, key: K)
where
K: Serialize + Debug,
{
let mut buf = KeyBuf::new();
self.bdel(key, &mut buf);
}
#[implement(super::Map)]
#[inline]
pub fn adel<const MAX: usize, K>(&self, key: K)
where
K: Serialize + Debug,
{
let mut buf = ArrayVec::<u8, MAX>::new();
self.bdel(key, &mut buf);
}
#[implement(super::Map)]
#[tracing::instrument(skip(self, buf), level = "trace")]
pub fn bdel<K, B>(&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);
}