pub trait Atomic<T>:
Send
+ Sync
+ Sizedwhere
T: Sized,{
// Required methods
fn new(val: T) -> Self;
fn store(&self, val: T, order: Ordering);
fn load(&self, order: Ordering) -> T;
fn swap(&self, val: T, order: Ordering) -> T;
fn get_mut(&mut self) -> &mut T;
fn into_inner(self) -> T;
fn compare_and_swap(&self, current: T, new: T, order: Ordering) -> T;
fn compare_exchange(
&self,
current: T,
new: T,
success: Ordering,
failure: Ordering,
) -> Result<T, T>;
fn compare_exchange_weak(
&self,
current: T,
new: T,
success: Ordering,
failure: Ordering,
) -> Result<T, T>;
// Provided method
unsafe fn from_raw(val: &T) -> &Self { ... }
}Expand description
Trait describing an atomic version of an atomically-sized type.
Required Methods§
fn new(val: T) -> Self
fn store(&self, val: T, order: Ordering)
fn load(&self, order: Ordering) -> T
fn swap(&self, val: T, order: Ordering) -> T
fn get_mut(&mut self) -> &mut T
fn into_inner(self) -> T
fn compare_and_swap(&self, current: T, new: T, order: Ordering) -> T
fn compare_exchange( &self, current: T, new: T, success: Ordering, failure: Ordering, ) -> Result<T, T>
fn compare_exchange_weak( &self, current: T, new: T, success: Ordering, failure: Ordering, ) -> Result<T, T>
Provided Methods§
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.