summaryrefslogtreecommitdiff
path: root/crates/tor-memquota/src/utils.rs
blob: 0e9a6f03a9b484ac82087c6fcaa8cf38a0056124 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//! Miscellaneous utilities

use crate::internal_prelude::*;

/// Convenience extension trait to provide `.take()`
///
/// Convenient way to provide `.take()` on some of our types.
pub(crate) trait DefaultExtTake: Default {
    /// Returns `*self`, replacing it with the default value.
    fn take(&mut self) -> Self {
        mem::take(self)
    }
}

/// Convenience wrapper for creating a no-op tracker
///
/// Equivalent to [`MemoryQuotaTracker::new_noop()`]`.into()`.
/// Provides `tor_proto::memquota::TopLevelAccount::new_noop()`
pub trait ArcMemoryQuotaTrackerExt {
    /// Create a new dummy toplevel tracker for testing purposes
    fn new_noop() -> Self;
}
impl ArcMemoryQuotaTrackerExt for Arc<MemoryQuotaTracker> {
    fn new_noop() -> Self {
        MemoryQuotaTracker::new_noop()
    }
}