#[cfg(not(all(test, loom)))] pub(crate) mod sync { pub(crate) mod atomic { pub(crate) use core::sync::atomic::{AtomicPtr, AtomicUsize, Ordering}; pub(crate) trait AtomicMut { fn with_mut(&mut self, f: F) -> R where F: FnOnce(&mut *mut T) -> R; } impl AtomicMut for AtomicPtr { fn with_mut(&mut self, f: F) -> R where F: FnOnce(&mut *mut T) -> R, { f(self.get_mut()) } } } } #[cfg(all(test, loom))] pub(crate) mod sync { pub(crate) mod atomic { pub(crate) use loom::sync::atomic::{AtomicPtr, AtomicUsize, Ordering}; pub(crate) trait AtomicMut {} } }