1
//! Miscellaneous utilities
2

            
3
use crate::internal_prelude::*;
4

            
5
/// Convenience extension trait to provide `.take()`
6
///
7
/// Convenient way to provide `.take()` on some of our types.
8
pub(crate) trait DefaultExtTake: Default {
9
    /// Returns `*self`, replacing it with the default value.
10
142312
    fn take(&mut self) -> Self {
11
142312
        mem::take(self)
12
142312
    }
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()`
19
pub trait ArcMemoryQuotaTrackerExt {
20
    /// Create a new dummy toplevel tracker for testing purposes
21
    fn new_noop() -> Self;
22
}
23
impl ArcMemoryQuotaTrackerExt for Arc<MemoryQuotaTracker> {
24
104
    fn new_noop() -> Self {
25
104
        MemoryQuotaTracker::new_noop()
26
104
    }
27
}