#![allow(dead_code, deprecated, unused_variables, unused_mut)] #![feature(atomic_try_update)] use std::sync::atomic::{AtomicBool, Ordering}; fn main() { let x = AtomicBool::new(false); assert_eq!(x.try_update(Ordering::SeqCst, Ordering::SeqCst, | _ | None), Err(false)); assert_eq!( x.try_update(Ordering::SeqCst, Ordering::SeqCst, | x | Some(! x)), Ok(false) ); assert_eq!( x.try_update(Ordering::SeqCst, Ordering::SeqCst, | x | Some(! x)), Ok(true) ); assert_eq!(x.load(Ordering::SeqCst), false); }