spawn_groups 1.1.0

Structured concurrency construct written in Rust, for Rustaceans
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use std::sync::{Mutex, MutexGuard};

#[derive(Default)]
pub(crate) struct StdMutex<T: ?Sized>(Mutex<T>);
pub(crate) type StdMutexGuard<'a, T> = MutexGuard<'a, T>;

impl<T> StdMutex<T> {
    pub(crate) fn new(t: T) -> Self {
        Self(Mutex::new(t))
    }

    pub(crate) fn lock(&self) -> StdMutexGuard<T> {
        self.0.lock().unwrap_or_else(|e| e.into_inner())
    }
}

unsafe impl<T: ?Sized> Send for StdMutex<T> {}
unsafe impl<T: ?Sized> Sync for StdMutex<T> {}