Skip to main content

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/// Deletes every key visible under a serialized prefix.
10///
11/// The operation scans a consistent iterator view, so later writes can remain.
12/// When debug assertions are disabled, scan errors are filtered after any
13/// preceding keys have been removed.
14///
15/// # Panics
16///
17/// Panics if the prefix cannot be serialized, a scan error occurs with debug
18/// assertions enabled, RocksDB rejects a deletion, or an uncorked flush fails.
19#[implement(super::Map)]
20#[tracing::instrument(level = "trace", skip(self))]
21pub async fn del_prefix<P>(self: &Arc<Self>, prefix: &P)
22where
23	P: Serialize + ?Sized + Debug + Sync,
24{
25	self.keys_prefix_raw(prefix)
26		.ignore_err()
27		.ready_for_each(|key| self.remove(&key))
28		.await;
29}