loom.rs源码
loom.rs源码
mod内容
loom.rs 的源码很少,主要就定义了一个 trait AtomicMut,然后为 core::sync::atomic::AtomicPtr
实现了这个 trait AtomicMut:
pub(crate) mod sync {
pub(crate) mod atomic {
pub(crate) use core::sync::atomic::{fence, AtomicPtr, AtomicUsize, Ordering};
pub(crate) trait AtomicMut<T> {...}
impl<T> AtomicMut<T> for AtomicPtr<T> {...}
}
}
loom.rs 中的 mod 定义的很深,看样子是为了和 core::sync::atomic::AtomicPtr
保持层次对齐,如 bytes::sync::atomic::AtomicMut
。
trait AtomicMut
trait AtomicMut 只定义了一个 with_mut
泛型方法
pub(crate) trait AtomicMut<T> {
fn with_mut<F, R>(&mut self, f: F) -> R
where
F: FnOnce(&mut *mut T) -> R;
}