hermes_async_runtime_components/mutex/impls/
mutex.rs1use 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}