peace-lock 0.1.3

A zero-cost abstraction lock that helps check contention free algorithms.
Documentation
use peace_lock::Mutex;
use std::{thread, thread::sleep, time::Duration};

#[test]
fn lock_unlock_lock() {
    let val = Mutex::new(1);
    thread::scope(|s| {
        s.spawn(|| {
            let lock1 = val.lock();
            drop(lock1);
            sleep(Duration::from_secs(1));
        });

        s.spawn(|| {
            sleep(Duration::from_secs(1));
            let _lock2 = val.lock();
        });
    });
}

#[test]
#[cfg_attr(any(debug_assertions, feature = "check"), should_panic)]
fn double_lock() {
    let val = Mutex::new(1);
    thread::scope(|s| {
        s.spawn(|| {
            let _lock1 = val.lock();
            sleep(Duration::from_secs(1));
        });

        s.spawn(|| {
            let _lock2 = val.lock();
            sleep(Duration::from_secs(1));
        });
    });
}