Struct rwlock2::MutexGuard [] [src]

#[must_use]
pub struct MutexGuard<'a, T: ?Sized + 'a> {
    // some 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

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]);

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

impl<'a, T: ?Sized> Drop for MutexGuard<'a, T>
[src]

fn drop(&mut self)

A method called when the value goes out of scope. Read more