hermes_async_runtime_components/mutex/impls/
mutex.rs

1use cgp::prelude::*;
2use futures_util::lock::{Mutex, MutexGuard};
3use hermes_runtime_components::traits::mutex::ProvideMutex;
4
5pub struct ProvideFuturesMutex;
6
7impl<Runtime> ProvideMutex<Runtime> for ProvideFuturesMutex
8where
9    Runtime: Async,
10{
11    type Mutex<T: Async> = Mutex<T>;
12
13    type MutexGuard<'a, T: Async> = MutexGuard<'a, T>;
14
15    fn new_mutex<T: Async>(item: T) -> Self::Mutex<T> {
16        Mutex::new(item)
17    }
18
19    async fn acquire_mutex<T: Async>(mutex: &Self::Mutex<T>) -> Self::MutexGuard<'_, T> {
20        mutex.lock().await
21    }
22}