Type Definition concurrency_traits::mutex::FullAsyncMutex [−][src]
type FullAsyncMutex<T, Q> = CustomMutex<T, RawFullAsyncMutex<Q>>;
Expand description
A mutex that can only be accessed through async await or try operations.
use std::ops::Deref; use concurrency_traits::mutex::{FullAsyncMutex, AsyncMutex}; use std::task::{Context, Waker, Wake}; use std::sync::Arc; use std::future::Future; use concurrency_traits::queue::ParkQueueStd; struct NullWaker; impl Wake for NullWaker{ fn wake(self:Arc<Self>) { println!("Wake!"); } } let mut future = Box::pin(async move { let mutex = FullAsyncMutex::<_, ParkQueueStd<_>>::new(100usize); let guard = mutex.lock_async().await; assert_eq!(*guard.deref(), 100usize); }); assert!(!future.as_mut().poll(&mut Context::from_waker(&Arc::new(NullWaker).into())).is_pending())