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 properly aligned to the size ofSelf. (For example, ifSelfisu128,srcmust be aligned to 16-byte even if the alignment ofu128is 8-byte.)ordermust beSeqCst,Acquire, orRelaxed.
The rules for the validity of the pointer follow the rules applied to
functions exposed by the standard library’s ptr module,
except that concurrent atomic operations on src are allowed if the
pointer go through UnsafeCell::get.
See the “Atomic accesses to read-only memory” section in the core::sync::atomic docs
for compatibility with read-only memory.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.