Struct MutexGuard
struct MutexGuard<'a, T: ?Sized> { ... }
A handle to a held Mutex. The guard can be held across any .await point
as it is Send.
As long as you have this guard, you have exclusive access to the underlying
T. The guard internally borrows the Mutex, so the mutex will not be
dropped while a guard exists.
The lock is automatically released whenever the guard is dropped, at which
point lock will succeed yet again.
Implementations
impl<'a, T: ?Sized> MutexGuard<'a, T>
fn map<U, F>(this: Self, f: F) -> MappedMutexGuard<'a, U> where U: ?Sized, F: FnOnce(&mut T) -> &mut UMakes a new
MappedMutexGuardfor a component of the locked data.This operation cannot fail as the
MutexGuardpassed in already locked the mutex.This is an associated function that needs to be used as
MutexGuard::map(...). A method would interfere with methods of the same name on the contents of the locked data.Examples
use ; ; # # asyncfn try_map<U, F>(this: Self, f: F) -> Result<MappedMutexGuard<'a, U>, Self> where U: ?Sized, F: FnOnce(&mut T) -> Option<&mut U>Attempts to make a new
MappedMutexGuardfor a component of the locked data. The original guard is returned if the closure returnsNone.This operation cannot fail as the
MutexGuardpassed in already locked the mutex.This is an associated function that needs to be used as
MutexGuard::try_map(...). A method would interfere with methods of the same name on the contents of the locked data.Examples
use ; ; # # asyncfn mutex(this: &Self) -> &'a Mutex<T>Returns a reference to the original
Mutex.use ; async # # # async
impl<'a, T> Freeze for MutexGuard<'a, T>
impl<'a, T> RefUnwindSafe for MutexGuard<'a, T>
impl<'a, T> Send for MutexGuard<'a, T>
impl<'a, T> Unpin for MutexGuard<'a, T>
impl<'a, T> UnsafeUnpin for MutexGuard<'a, T>
impl<'a, T> UnwindSafe for MutexGuard<'a, T>
impl<P, T> Receiver for MutexGuard<'a, T>
impl<T> Any for MutexGuard<'a, T>
fn type_id(self: &Self) -> TypeId
impl<T> Borrow for MutexGuard<'a, T>
fn borrow(self: &Self) -> &T
impl<T> BorrowMut for MutexGuard<'a, T>
fn borrow_mut(self: &mut Self) -> &mut T
impl<T> From for MutexGuard<'a, T>
fn from(t: T) -> TReturns the argument unchanged.
impl<T> Sync for MutexGuard<'_, T>
impl<T> ToString for MutexGuard<'a, T>
fn to_string(self: &Self) -> String
impl<T, U> Into for MutexGuard<'a, T>
fn into(self: Self) -> UCalls
U::from(self).That is, this conversion is whatever the implementation of
[From]<T> for Uchooses to do.
impl<T, U> TryFrom for MutexGuard<'a, T>
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
impl<T, U> TryInto for MutexGuard<'a, T>
fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::Error>
impl<T: ?Sized + fmt::Debug> Debug for MutexGuard<'_, T>
fn fmt(self: &Self, f: &mut Formatter<'_>) -> Result
impl<T: ?Sized + fmt::Display> Display for MutexGuard<'_, T>
fn fmt(self: &Self, f: &mut Formatter<'_>) -> Result
impl<T: ?Sized> Deref for MutexGuard<'_, T>
fn deref(self: &Self) -> &<Self as >::Target
impl<T: ?Sized> DerefMut for MutexGuard<'_, T>
fn deref_mut(self: &mut Self) -> &mut <Self as >::Target
impl<T: ?Sized> Drop for MutexGuard<'_, T>
fn drop(self: &mut Self)