1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
pub use StdMutex as Mutex;

#[derive(Debug)]
pub struct StdMutex<T>(std::sync::Mutex<T>);

impl<T> StdMutex<T> {
    #[inline(always)]
    pub fn new(t: T) -> Self {
        Self(std::sync::Mutex::new(t))
    }

    #[inline(always)]
    pub fn lock(&self) -> std::sync::MutexGuard<T> {
        self.0.lock().map_or_else(|e| e.into_inner(), |v| v)
    }
}