• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #[cfg(not(all(test, loom)))]
2 pub(crate) mod sync {
3     pub(crate) mod atomic {
4         pub(crate) use core::sync::atomic::{AtomicPtr, AtomicUsize, Ordering};
5 
6         pub(crate) trait AtomicMut<T> {
with_mut<F, R>(&mut self, f: F) -> R where F: FnOnce(&mut *mut T) -> R7             fn with_mut<F, R>(&mut self, f: F) -> R
8             where
9                 F: FnOnce(&mut *mut T) -> R;
10         }
11 
12         impl<T> AtomicMut<T> for AtomicPtr<T> {
with_mut<F, R>(&mut self, f: F) -> R where F: FnOnce(&mut *mut T) -> R,13             fn with_mut<F, R>(&mut self, f: F) -> R
14             where
15                 F: FnOnce(&mut *mut T) -> R,
16             {
17                 f(self.get_mut())
18             }
19         }
20     }
21 }
22 
23 #[cfg(all(test, loom))]
24 pub(crate) mod sync {
25     pub(crate) mod atomic {
26         pub(crate) use loom::sync::atomic::{AtomicPtr, AtomicUsize, Ordering};
27 
28         pub(crate) trait AtomicMut<T> {}
29     }
30 }
31