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;
        }