#![allow(dead_code, deprecated, unused_variables, unused_mut)] #![feature(atomic_try_update)] use std::sync::atomic::{AtomicPtr, Ordering}; fn main() { let ptr: *mut _ = &mut 5; let some_ptr = AtomicPtr::new(ptr); let new: *mut _ = &mut 10; let result = some_ptr.update(Ordering::SeqCst, Ordering::SeqCst, |_| new); assert_eq!(result, ptr); assert_eq!(some_ptr.load(Ordering::SeqCst), new); }