tor_memquota/
utils.rs

1//! Miscellaneous utilities
2
3use crate::internal_prelude::*;
4
5/// Convenience extension trait to provide `.take()`
6///
7/// Convenient way to provide `.take()` on some of our types.
8pub(crate) trait DefaultExtTake: Default {
9    /// Returns `*self`, replacing it with the default value.
10    fn take(&mut self) -> Self {
11        mem::take(self)
12    }
13}
14
15/// Convenience wrapper for creating a no-op tracker
16///
17/// Equivalent to [`MemoryQuotaTracker::new_noop()`]`.into()`.
18/// Provides `tor_proto::memquota::TopLevelAccount::new_noop()`
19pub trait ArcMemoryQuotaTrackerExt {
20    /// Create a new dummy toplevel tracker for testing purposes
21    fn new_noop() -> Self;
22}
23impl ArcMemoryQuotaTrackerExt for Arc<MemoryQuotaTracker> {
24    fn new_noop() -> Self {
25        MemoryQuotaTracker::new_noop()
26    }
27}