#![allow(dead_code, deprecated, unused_variables, unused_mut)] use std::sync::atomic::{self, AtomicPtr}; fn main() { let ptr: *mut *mut u8 = Box::into_raw(Box::new(std::ptr::null_mut())); assert!(ptr.cast::< AtomicPtr < u8 >> ().is_aligned()); { let atomic = unsafe { AtomicPtr::from_ptr(ptr) }; atomic.store(std::ptr::NonNull::dangling().as_ptr(), atomic::Ordering::Relaxed); } assert!(! unsafe { * ptr } .is_null()); unsafe { drop(Box::from_raw(ptr)) } }