Skip to main content

RwLockExt

Trait RwLockExt 

Source
pub trait RwLockExt<T> {
    // Required methods
    fn read_or_panic(&self) -> RwLockReadGuard<'_, T>;
    fn write_or_panic(&self) -> RwLockWriteGuard<'_, T>;
}
Expand description

Extension trait for RwLock to provide methods that acquire read/write locks, panicking if the lock is poisoned.

Mirrors MutexExt for RwLock so callers avoid #[allow(clippy::unwrap_used)] at each lock site.

§Examples

use libdd_common::RwLockExt;
use std::sync::{Arc, RwLock};

let data = Arc::new(RwLock::new(5));
let data_clone = Arc::clone(&data);

std::thread::spawn(move || {
    let mut num = data_clone.write_or_panic();
    *num += 1;
})
.join()
.expect("Thread panicked");

assert_eq!(*data.read_or_panic(), 6);

Required Methods§

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl<T> RwLockExt<T> for RwLock<T>

Implementors§