option-lock 0.3.1

A simple mutex for Option values
Documentation
use std::{hint::spin_loop, sync::Arc, thread};

use option_lock::Mutex;

// FIXME - this example would work equally well with a simple atomic

fn main() {
    let shared = Arc::new(Mutex::new(0i32));
    let threads = 100;
    for _ in 0..threads {
        let shared = shared.clone();
        thread::spawn(move || {
            let mut guard = shared.spin_lock().unwrap();
            *guard += 1;
        });
    }
    loop {
        if shared.try_copy() == Ok(threads) {
            break;
        }
        spin_loop()
    }
    println!("Completed {} threads", threads);
}