Expand description
A library of Futures-aware locking primitives. These locks can safely
be used in asynchronous environments like Tokio. When they block,
they’ll only block a single task, not the entire reactor.
These primitives generally work much like their counterparts from the
standard library. But instead of blocking, they return a Future that
completes when the lock has been acquired.
§Examples
let mtx = Mutex::<u32>::new(0);
let fut = mtx.lock().map(|mut guard| { *guard += 5; });
block_on(fut);
assert_eq!(mtx.try_unwrap().unwrap(), 5);Structs§
- Mutex
- A Futures-aware Mutex.
- Mutex
Fut - A
Futurerepresenting a pendingMutexacquisition. - Mutex
Guard - An RAII mutex guard, much like
std::sync::MutexGuard. The wrapped data can be accessed via itsDerefandDerefMutimplementations. - Mutex
Weak MutexWeakis a non-owning reference to aMutex.MutexWeakis toMutexasstd::sync::Weakis tostd::sync::Arc.- RwLock
- A Futures-aware RwLock.
- RwLock
Read Fut - A
Futurerepresenting a pendingRwLockshared acquisition. - RwLock
Read Guard - An RAII guard, much like
std::sync::RwLockReadGuard. The wrapped data can be accessed via itsDerefimplementation. - RwLock
Write Fut - A
Futurerepresenting a pendingRwLockexclusive acquisition. - RwLock
Write Guard - An RAII guard, much like
std::sync::RwLockWriteGuard. The wrapped data can be accessed via itsDerefandDerefMutimplementations. - TryLock
Error - The lock could not be acquired at this time because the operation would otherwise block.