use std::sync::Arc; use futures::{Stream, TryStreamExt}; use tuwunel_core::{ Result, implement, utils::stream::{ReadyExt, TryIgnore}, }; use crate::keyval::Key; /// Delete all data stored in this map. !!! USE WITH CAUTION !!! /// /// See for_clear() with additional details. #[implement(super::Map)] #[tracing::instrument(level = "trace")] pub async fn clear(self: &Arc) { self.for_clear() .ignore_err() .ready_for_each(|_| ()) .await; } /// Delete all data stored in this map. !!! USE WITH CAUTION !!! /// /// Provides stream of keys undergoing deletion along with any errors. /// /// Note this operation applies to a snapshot of the data when invoked. /// Additional data written during or after this call may be missed. #[implement(super::Map)] #[tracing::instrument(level = "trace")] pub fn for_clear(self: &Arc) -> impl Stream>> + Send { self.raw_keys().inspect_ok(|key| self.remove(key)) }