Skip to main content

AtomicLoad

Trait AtomicLoad 

Source
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§

Source

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:

  • src must be valid for reads.
  • src must be aligned to size_of::<MaybeUninit<T>>() (note that on some platforms this can be bigger than align_of::<MaybeUninit<T>>()).
  • order must be SeqCst, Acquire, or Relaxed.
  • 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

Source§

unsafe fn atomic_load( src: *const MaybeUninit<Self>, order: Ordering, ) -> MaybeUninit<Self>

Source§

impl AtomicLoad for i16

Source§

unsafe fn atomic_load( src: *const MaybeUninit<Self>, order: Ordering, ) -> MaybeUninit<Self>

Source§

impl AtomicLoad for i32

Source§

unsafe fn atomic_load( src: *const MaybeUninit<Self>, order: Ordering, ) -> MaybeUninit<Self>

Source§

impl AtomicLoad for i64

Source§

unsafe fn atomic_load( src: *const MaybeUninit<Self>, order: Ordering, ) -> MaybeUninit<Self>

Source§

impl AtomicLoad for i128

Source§

unsafe fn atomic_load( src: *const MaybeUninit<Self>, order: Ordering, ) -> MaybeUninit<Self>

Source§

impl AtomicLoad for isize

Source§

unsafe fn atomic_load( src: *const MaybeUninit<Self>, order: Ordering, ) -> MaybeUninit<Self>

Source§

impl AtomicLoad for u8

Source§

unsafe fn atomic_load( src: *const MaybeUninit<Self>, order: Ordering, ) -> MaybeUninit<Self>

Source§

impl AtomicLoad for u16

Source§

unsafe fn atomic_load( src: *const MaybeUninit<Self>, order: Ordering, ) -> MaybeUninit<Self>

Source§

impl AtomicLoad for u32

Source§

unsafe fn atomic_load( src: *const MaybeUninit<Self>, order: Ordering, ) -> MaybeUninit<Self>

Source§

impl AtomicLoad for u64

Source§

unsafe fn atomic_load( src: *const MaybeUninit<Self>, order: Ordering, ) -> MaybeUninit<Self>

Source§

impl AtomicLoad for u128

Source§

unsafe fn atomic_load( src: *const MaybeUninit<Self>, order: Ordering, ) -> MaybeUninit<Self>

Source§

impl AtomicLoad for usize

Source§

unsafe fn atomic_load( src: *const MaybeUninit<Self>, order: Ordering, ) -> MaybeUninit<Self>

Implementors§