atomic-try-update 0.0.2

Primitives that make it easy to implement correct lock-free algorithms
Documentation
use atomic_try_update::bits::FlagU64;
use rand::{rngs::ThreadRng, Rng};

#[test]
fn test_flag_u64() {
    let mut rand = ThreadRng::default();

    for _ in 1..100_000 {
        let val = rand.gen_range(0..u64::MAX >> 1);
        let flag = rand.gen_bool(0.5);

        let mut f = FlagU64::default();
        f.set_val(val);
        assert_eq!(val, f.get_val());
        f.set_flag(flag);
        assert_eq!(flag, f.get_flag());
        assert_eq!(val, f.get_val());
        f.set_val(val);
        assert_eq!(val, f.get_val());
        assert_eq!(flag, f.get_flag());
    }
}