Struct rwlock2::MutexGuard
[−]
[src]
#[must_use]pub struct MutexGuard<'a, T: ?Sized + 'a> { /* fields omitted */ }
An RAII implementation of a "scoped lock" of a mutex. When this structure is dropped (falls out of scope), the lock will be unlocked.
The data protected by the mutex can be access through this guard via its
Deref
and DerefMut
implementations
Methods
impl<'mutex, T: ?Sized> MutexGuard<'mutex, T>
[src]
fn map<U: ?Sized, F>(this: Self, cb: F) -> MutexGuard<'mutex, U> where
F: FnOnce(&'mutex mut T) -> &'mutex mut U,
F: FnOnce(&'mutex mut T) -> &'mutex mut U,
Transform this guard to hold a sub-borrow of the original data.
Applies the supplied closure to the data, returning a new lock guard referencing the borrow returned by the closure.
Examples
let x = Mutex::new(vec![1, 2]); { let mut y = MutexGuard::map(x.lock().unwrap(), |v| &mut v[0]); *y = 3; } assert_eq!(&*x.lock().unwrap(), &[3, 2]);
fn filter_map<U: ?Sized, E, F>(
this: Self,
cb: F
) -> Result<MutexGuard<'mutex, U>, (Self, E)> where
F: FnOnce(&'mutex mut T) -> Result<&'mutex mut U, E>,
this: Self,
cb: F
) -> Result<MutexGuard<'mutex, U>, (Self, E)> where
F: FnOnce(&'mutex mut T) -> Result<&'mutex mut U, E>,
Conditionally get a new guard to a sub-borrow depending on the original contents of the guard.
Trait Implementations
impl<'mutex, T: ?Sized> Deref for MutexGuard<'mutex, T>
[src]
type Target = T
The resulting type after dereferencing
fn deref(&self) -> &T
The method called to dereference a value
impl<'mutex, T: ?Sized> DerefMut for MutexGuard<'mutex, T>
[src]
fn deref_mut(&mut self) -> &mut T
The method called to mutably dereference a value