simple_db_rust/
util.rs

1use std::sync::{RwLock, RwLockReadGuard, RwLockWriteGuard};
2
3// copy from https://github.com/tikv/tikv/blob/b15ea3b1cd766375cb52019e35c195ed797124df/components/tikv_util/src/lib.rs#L171-L186
4// / A handy shortcut to replace `RwLock` write/read().unwrap() pattern to
5// / shortcut wl and rl.
6pub trait HandyRwLock<T> {
7    fn wl(&self) -> RwLockWriteGuard<'_, T>;
8    fn rl(&self) -> RwLockReadGuard<'_, T>;
9}
10
11impl<T> HandyRwLock<T> for RwLock<T> {
12    fn wl(&self) -> RwLockWriteGuard<'_, T> {
13        self.write().unwrap()
14    }
15
16    fn rl(&self) -> RwLockReadGuard<'_, T> {
17        self.read().unwrap()
18    }
19}
20
21pub use crate::{btree::tuple::simple_int_tuple_scheme, log::init_log};