pub trait AtomicLoad: Primitive {
// Required method
unsafe fn atomic_load(
src: *const MaybeUninit<Self>,
order: Ordering,
) -> MaybeUninit<Self>;
}Expand description
Atomic load.
This trait is sealed and cannot be implemented for types outside of atomic-maybe-uninit.
Required Methods§
Sourceunsafe fn atomic_load(
src: *const MaybeUninit<Self>,
order: Ordering,
) -> MaybeUninit<Self>
unsafe fn atomic_load( src: *const MaybeUninit<Self>, order: Ordering, ) -> MaybeUninit<Self>
Loads a value from src.
atomic_load takes an Ordering argument which describes the memory ordering of this operation.
Possible values are SeqCst, Acquire and Relaxed.
§Safety
Behavior is undefined if any of the following conditions are violated:
srcmust be valid for reads.srcmust be aligned tosize_of::<MaybeUninit<T>>()(note that on some platforms this can be bigger thanalign_of::<MaybeUninit<T>>()).ordermust beSeqCst,Acquire, orRelaxed.- You must adhere to the Memory model for atomic accesses. In particular, it is not allowed to mix conflicting atomic and non-atomic accesses, or atomic accesses of different sizes, without synchronization.
Compatibility with read-only memory applies only to relaxed operations with a register or smaller width.
See the “Atomic accesses to read-only memory” section in the core::sync::atomic docs
for more.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".
Implementations on Foreign Types§
Source§impl AtomicLoad for i8
impl AtomicLoad for i8
unsafe fn atomic_load( src: *const MaybeUninit<Self>, order: Ordering, ) -> MaybeUninit<Self>
Source§impl AtomicLoad for i16
impl AtomicLoad for i16
unsafe fn atomic_load( src: *const MaybeUninit<Self>, order: Ordering, ) -> MaybeUninit<Self>
Source§impl AtomicLoad for i32
impl AtomicLoad for i32
unsafe fn atomic_load( src: *const MaybeUninit<Self>, order: Ordering, ) -> MaybeUninit<Self>
Source§impl AtomicLoad for i64
impl AtomicLoad for i64
unsafe fn atomic_load( src: *const MaybeUninit<Self>, order: Ordering, ) -> MaybeUninit<Self>
Source§impl AtomicLoad for isize
impl AtomicLoad for isize
unsafe fn atomic_load( src: *const MaybeUninit<Self>, order: Ordering, ) -> MaybeUninit<Self>
Source§impl AtomicLoad for u8
impl AtomicLoad for u8
unsafe fn atomic_load( src: *const MaybeUninit<Self>, _order: Ordering, ) -> MaybeUninit<Self>
Source§impl AtomicLoad for u16
impl AtomicLoad for u16
unsafe fn atomic_load( src: *const MaybeUninit<Self>, _order: Ordering, ) -> MaybeUninit<Self>
Source§impl AtomicLoad for u32
impl AtomicLoad for u32
unsafe fn atomic_load( src: *const MaybeUninit<Self>, _order: Ordering, ) -> MaybeUninit<Self>
Source§impl AtomicLoad for u64
Available on x86 and non-atomic_maybe_uninit_no_cmpxchg8b only.
impl AtomicLoad for u64
Available on x86 and non-
atomic_maybe_uninit_no_cmpxchg8b only.