tuwunel_database/map/del_prefix.rs
1use std::{fmt::Debug, sync::Arc};
2
3use serde::Serialize;
4use tuwunel_core::{
5 implement,
6 utils::stream::{ReadyExt, TryIgnore},
7};
8
9/// Delete every key under `prefix`. !!! USE WITH CAUTION !!!
10///
11/// Operates on a snapshot taken when invoked; data written during or after the
12/// call may be missed. Mirrors the borrowed-cursor delete of `for_clear`.
13#[implement(super::Map)]
14#[tracing::instrument(level = "trace", skip(self))]
15pub async fn del_prefix<P>(self: &Arc<Self>, prefix: &P)
16where
17 P: Serialize + ?Sized + Debug + Sync,
18{
19 self.keys_prefix_raw(prefix)
20 .ignore_err()
21 .ready_for_each(|key| self.remove(&key))
22 .await;
23}