HasMutex

Trait HasMutex 

Source
pub trait HasMutex: Async {
    type Mutex<T: Async>: Async;
    type MutexGuard<'a, T: Async>: 'a + Send + Sync + DerefMut<Target = T>;

    // Required methods
    fn new_mutex<T: Async>(item: T) -> Self::Mutex<T>;
    fn acquire_mutex<'a, T: Async>(
        mutex: &'a Self::Mutex<T>,
    ) -> impl Future<Output = Self::MutexGuard<'a, T>> + Send;
}

Required Associated Types§

Source

type Mutex<T: Async>: Async

Source

type MutexGuard<'a, T: Async>: 'a + Send + Sync + DerefMut<Target = T>

Required Methods§

Source

fn new_mutex<T: Async>(item: T) -> Self::Mutex<T>

Source

fn acquire_mutex<'a, T: Async>( mutex: &'a Self::Mutex<T>, ) -> impl Future<Output = Self::MutexGuard<'a, T>> + Send

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl<Runtime> HasMutex for Runtime
where Runtime: Async + HasComponents, Runtime::Components: ProvideMutex<Runtime>,

Source§

type Mutex<T: Async> = <<Runtime as HasComponents>::Components as ProvideMutex<Runtime>>::Mutex<T>

Source§

type MutexGuard<'a, T: Async> = <<Runtime as HasComponents>::Components as ProvideMutex<Runtime>>::MutexGuard<'a, T>