Struct std::sync::RwLockWriteGuard [] [src]

#[must_use]
pub struct RwLockWriteGuard<'a, T: ?Sized + 'a> {
    // some fields omitted
}
1.0.0

RAII structure used to release the exclusive write access of a lock when dropped.

Methods

impl<'rwlock, T: ?Sized> RwLockWriteGuard<'rwlock, T>

fn map<U: ?Sized, F>(this: Self, cb: F) -> RwLockWriteGuard<'rwlock, U> where F: FnOnce(&mut T) -> &mut U

Deprecated since 1.8.0

: unsound on Mutex because of Condvar and RwLock may also with to be used with Condvar one day

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

#![feature(guard_map)] fn main() { use std::sync::{RwLockWriteGuard, RwLock}; let x = RwLock::new(vec![1, 2]); { let mut y = RwLockWriteGuard::map(x.write().unwrap(), |v| &mut v[0]); assert_eq!(*y, 1); *y = 10; } assert_eq!(&**x.read().unwrap(), &[10, 2]); }
let x = RwLock::new(vec![1, 2]);

{
    let mut y = RwLockWriteGuard::map(x.write().unwrap(), |v| &mut v[0]);
    assert_eq!(*y, 1);

    *y = 10;
}

assert_eq!(&**x.read().unwrap(), &[10, 2]);

Trait Implementations

impl<'a, T: ?Sized> !Send for RwLockWriteGuard<'a, T>

impl<'rwlock, T: ?Sized> Deref for RwLockWriteGuard<'rwlock, T>

type Target = T

fn deref(&self) -> &T

impl<'rwlock, T: ?Sized> DerefMut for RwLockWriteGuard<'rwlock, T>

fn deref_mut(&mut self) -> &mut T

impl<'a, T: ?Sized> Drop for RwLockWriteGuard<'a, T>

fn drop(&mut self)