Crate manual_rwlock

Source
Expand description

§Manual RwLock

A library implementing An RW lock with more manual control Sorry for poor documentation, I will update this later.
New read write lock struct: MrwLock

§Examples

§Convert between Guards

use manual_rwlock::MrwLock;
let mrw_lock = MrwLock::new(10);
let read = mrw_lock.read().unwrap();
let mut write = read.to_write().unwrap();
*write = 5;
let read = write.to_read();
assert_eq!(*read, 5)

§Release and Reobtain locks

use manual_rwlock::MrwLock;
let mrw_lock = MrwLock::new(10);
let read = mrw_lock.read().unwrap();
unsafe {read.early_release();}
{
    let mut write = mrw_lock.write().unwrap();
    *write = 5;
}
unsafe {read.reobtain();}
assert_eq!(*read, 5)

§Clone ReadGaurd

 use manual_rwlock::MrwLock;

let rwlock = MrwLock::new(5);
let read = rwlock.read().unwrap();
let read2 = read.clone();
assert_eq!(*read2, 5);

§Use Locking Directly

LockState

Structs§

LockState
State that manages control flow for MrwLock and Guards: SliceReadGaurd, ReadGaurd ,SliceWriteGaurd, WriteGaurd Passing by reference allows interior mutability
MrwLock
ReadGaurd
SliceReadGaurd
Slice Read Guard
SliceWriteGaurd
Slice Write Guard
WriteGaurd

Enums§

LockError

Type Aliases§

LockResult