#![allow(dead_code, deprecated, unused_variables, unused_mut)] use core::sync::atomic::{AtomicPtr, Ordering}; fn main() { let pointer = &mut 3i64 as *mut i64; let atom = AtomicPtr::::new(pointer); assert_eq!(atom.fetch_or(1, Ordering::Relaxed).addr() & 1, 0); let tagged = atom.load(Ordering::Relaxed); assert_eq!(tagged.addr() & 1, 1); assert_eq!(tagged.map_addr(| p | p & ! 1), pointer); }