pub unsafe trait Atomic: Send + Sync {
    type Primitive: HasAtomic<Atomic = Self>;

    fn new(v: Self::Primitive) -> Self;
    fn get_mut(&mut self) -> &mut Self::Primitive;
    fn into_inner(self) -> Self::Primitive;
    fn load(&self, order: Ordering) -> Self::Primitive;
    fn store(&self, val: Self::Primitive, order: Ordering);
    fn swap(&self, val: Self::Primitive, order: Ordering) -> Self::Primitive;
    fn compare_exchange(
        &self,
        current: Self::Primitive,
        new: Self::Primitive,
        success: Ordering,
        failure: Ordering
    ) -> Result<Self::Primitive, Self::Primitive>; fn compare_exchange_weak(
        &self,
        current: Self::Primitive,
        new: Self::Primitive,
        success: Ordering,
        failure: Ordering
    ) -> Result<Self::Primitive, Self::Primitive>; fn fetch_update<F: FnMut(Self::Primitive) -> Option<Self::Primitive>>(
        &self,
        set_order: Ordering,
        fetch_ordering: Ordering,
        f: F
    ) -> Result<Self::Primitive, Self::Primitive>; }
Expand description

Safety

  • Self must have the same size and alignment as Primitive

Required Associated Types§

source

type Primitive: HasAtomic<Atomic = Self>

Required Methods§

source

fn new(v: Self::Primitive) -> Self

source

fn get_mut(&mut self) -> &mut Self::Primitive

source

fn into_inner(self) -> Self::Primitive

source

fn load(&self, order: Ordering) -> Self::Primitive

source

fn store(&self, val: Self::Primitive, order: Ordering)

source

fn swap(&self, val: Self::Primitive, order: Ordering) -> Self::Primitive

source

fn compare_exchange(
    &self,
    current: Self::Primitive,
    new: Self::Primitive,
    success: Ordering,
    failure: Ordering
) -> Result<Self::Primitive, Self::Primitive>

source

fn compare_exchange_weak(
    &self,
    current: Self::Primitive,
    new: Self::Primitive,
    success: Ordering,
    failure: Ordering
) -> Result<Self::Primitive, Self::Primitive>

source

fn fetch_update<F: FnMut(Self::Primitive) -> Option<Self::Primitive>>(
    &self,
    set_order: Ordering,
    fetch_ordering: Ordering,
    f: F
) -> Result<Self::Primitive, Self::Primitive>

Implementations on Foreign Types§

source§

impl Atomic for AtomicU8

§

type Primitive = u8

source§

fn new(v: Self::Primitive) -> Self

source§

fn get_mut(&mut self) -> &mut Self::Primitive

source§

fn into_inner(self) -> Self::Primitive

source§

fn load(&self, order: Ordering) -> Self::Primitive

source§

fn store(&self, val: Self::Primitive, order: Ordering)

source§

fn swap(&self, val: Self::Primitive, order: Ordering) -> Self::Primitive

source§

fn compare_exchange(
    &self,
    current: Self::Primitive,
    new: Self::Primitive,
    success: Ordering,
    failure: Ordering
) -> Result<Self::Primitive, Self::Primitive>

source§

fn compare_exchange_weak(
    &self,
    current: Self::Primitive,
    new: Self::Primitive,
    success: Ordering,
    failure: Ordering
) -> Result<Self::Primitive, Self::Primitive>

source§

fn fetch_update<F: FnMut(Self::Primitive) -> Option<Self::Primitive>>(
    &self,
    set_order: Ordering,
    fetch_ordering: Ordering,
    f: F
) -> Result<Self::Primitive, Self::Primitive>

source§

impl Atomic for AtomicI8

§

type Primitive = i8

source§

fn new(v: Self::Primitive) -> Self

source§

fn get_mut(&mut self) -> &mut Self::Primitive

source§

fn into_inner(self) -> Self::Primitive

source§

fn load(&self, order: Ordering) -> Self::Primitive

source§

fn store(&self, val: Self::Primitive, order: Ordering)

source§

fn swap(&self, val: Self::Primitive, order: Ordering) -> Self::Primitive

source§

fn compare_exchange(
    &self,
    current: Self::Primitive,
    new: Self::Primitive,
    success: Ordering,
    failure: Ordering
) -> Result<Self::Primitive, Self::Primitive>

source§

fn compare_exchange_weak(
    &self,
    current: Self::Primitive,
    new: Self::Primitive,
    success: Ordering,
    failure: Ordering
) -> Result<Self::Primitive, Self::Primitive>

source§

fn fetch_update<F: FnMut(Self::Primitive) -> Option<Self::Primitive>>(
    &self,
    set_order: Ordering,
    fetch_ordering: Ordering,
    f: F
) -> Result<Self::Primitive, Self::Primitive>

source§

impl Atomic for AtomicU16

§

type Primitive = u16

source§

fn new(v: Self::Primitive) -> Self

source§

fn get_mut(&mut self) -> &mut Self::Primitive

source§

fn into_inner(self) -> Self::Primitive

source§

fn load(&self, order: Ordering) -> Self::Primitive

source§

fn store(&self, val: Self::Primitive, order: Ordering)

source§

fn swap(&self, val: Self::Primitive, order: Ordering) -> Self::Primitive

source§

fn compare_exchange(
    &self,
    current: Self::Primitive,
    new: Self::Primitive,
    success: Ordering,
    failure: Ordering
) -> Result<Self::Primitive, Self::Primitive>

source§

fn compare_exchange_weak(
    &self,
    current: Self::Primitive,
    new: Self::Primitive,
    success: Ordering,
    failure: Ordering
) -> Result<Self::Primitive, Self::Primitive>

source§

fn fetch_update<F: FnMut(Self::Primitive) -> Option<Self::Primitive>>(
    &self,
    set_order: Ordering,
    fetch_ordering: Ordering,
    f: F
) -> Result<Self::Primitive, Self::Primitive>

source§

impl Atomic for AtomicI16

§

type Primitive = i16

source§

fn new(v: Self::Primitive) -> Self

source§

fn get_mut(&mut self) -> &mut Self::Primitive

source§

fn into_inner(self) -> Self::Primitive

source§

fn load(&self, order: Ordering) -> Self::Primitive

source§

fn store(&self, val: Self::Primitive, order: Ordering)

source§

fn swap(&self, val: Self::Primitive, order: Ordering) -> Self::Primitive

source§

fn compare_exchange(
    &self,
    current: Self::Primitive,
    new: Self::Primitive,
    success: Ordering,
    failure: Ordering
) -> Result<Self::Primitive, Self::Primitive>

source§

fn compare_exchange_weak(
    &self,
    current: Self::Primitive,
    new: Self::Primitive,
    success: Ordering,
    failure: Ordering
) -> Result<Self::Primitive, Self::Primitive>

source§

fn fetch_update<F: FnMut(Self::Primitive) -> Option<Self::Primitive>>(
    &self,
    set_order: Ordering,
    fetch_ordering: Ordering,
    f: F
) -> Result<Self::Primitive, Self::Primitive>

source§

impl Atomic for AtomicU32

§

type Primitive = u32

source§

fn new(v: Self::Primitive) -> Self

source§

fn get_mut(&mut self) -> &mut Self::Primitive

source§

fn into_inner(self) -> Self::Primitive

source§

fn load(&self, order: Ordering) -> Self::Primitive

source§

fn store(&self, val: Self::Primitive, order: Ordering)

source§

fn swap(&self, val: Self::Primitive, order: Ordering) -> Self::Primitive

source§

fn compare_exchange(
    &self,
    current: Self::Primitive,
    new: Self::Primitive,
    success: Ordering,
    failure: Ordering
) -> Result<Self::Primitive, Self::Primitive>

source§

fn compare_exchange_weak(
    &self,
    current: Self::Primitive,
    new: Self::Primitive,
    success: Ordering,
    failure: Ordering
) -> Result<Self::Primitive, Self::Primitive>

source§

fn fetch_update<F: FnMut(Self::Primitive) -> Option<Self::Primitive>>(
    &self,
    set_order: Ordering,
    fetch_ordering: Ordering,
    f: F
) -> Result<Self::Primitive, Self::Primitive>

source§

impl Atomic for AtomicI32

§

type Primitive = i32

source§

fn new(v: Self::Primitive) -> Self

source§

fn get_mut(&mut self) -> &mut Self::Primitive

source§

fn into_inner(self) -> Self::Primitive

source§

fn load(&self, order: Ordering) -> Self::Primitive

source§

fn store(&self, val: Self::Primitive, order: Ordering)

source§

fn swap(&self, val: Self::Primitive, order: Ordering) -> Self::Primitive

source§

fn compare_exchange(
    &self,
    current: Self::Primitive,
    new: Self::Primitive,
    success: Ordering,
    failure: Ordering
) -> Result<Self::Primitive, Self::Primitive>

source§

fn compare_exchange_weak(
    &self,
    current: Self::Primitive,
    new: Self::Primitive,
    success: Ordering,
    failure: Ordering
) -> Result<Self::Primitive, Self::Primitive>

source§

fn fetch_update<F: FnMut(Self::Primitive) -> Option<Self::Primitive>>(
    &self,
    set_order: Ordering,
    fetch_ordering: Ordering,
    f: F
) -> Result<Self::Primitive, Self::Primitive>

source§

impl Atomic for AtomicU64

§

type Primitive = u64

source§

fn new(v: Self::Primitive) -> Self

source§

fn get_mut(&mut self) -> &mut Self::Primitive

source§

fn into_inner(self) -> Self::Primitive

source§

fn load(&self, order: Ordering) -> Self::Primitive

source§

fn store(&self, val: Self::Primitive, order: Ordering)

source§

fn swap(&self, val: Self::Primitive, order: Ordering) -> Self::Primitive

source§

fn compare_exchange(
    &self,
    current: Self::Primitive,
    new: Self::Primitive,
    success: Ordering,
    failure: Ordering
) -> Result<Self::Primitive, Self::Primitive>

source§

fn compare_exchange_weak(
    &self,
    current: Self::Primitive,
    new: Self::Primitive,
    success: Ordering,
    failure: Ordering
) -> Result<Self::Primitive, Self::Primitive>

source§

fn fetch_update<F: FnMut(Self::Primitive) -> Option<Self::Primitive>>(
    &self,
    set_order: Ordering,
    fetch_ordering: Ordering,
    f: F
) -> Result<Self::Primitive, Self::Primitive>

source§

impl Atomic for AtomicI64

§

type Primitive = i64

source§

fn new(v: Self::Primitive) -> Self

source§

fn get_mut(&mut self) -> &mut Self::Primitive

source§

fn into_inner(self) -> Self::Primitive

source§

fn load(&self, order: Ordering) -> Self::Primitive

source§

fn store(&self, val: Self::Primitive, order: Ordering)

source§

fn swap(&self, val: Self::Primitive, order: Ordering) -> Self::Primitive

source§

fn compare_exchange(
    &self,
    current: Self::Primitive,
    new: Self::Primitive,
    success: Ordering,
    failure: Ordering
) -> Result<Self::Primitive, Self::Primitive>

source§

fn compare_exchange_weak(
    &self,
    current: Self::Primitive,
    new: Self::Primitive,
    success: Ordering,
    failure: Ordering
) -> Result<Self::Primitive, Self::Primitive>

source§

fn fetch_update<F: FnMut(Self::Primitive) -> Option<Self::Primitive>>(
    &self,
    set_order: Ordering,
    fetch_ordering: Ordering,
    f: F
) -> Result<Self::Primitive, Self::Primitive>

source§

impl Atomic for AtomicUsize

§

type Primitive = usize

source§

fn new(v: Self::Primitive) -> Self

source§

fn get_mut(&mut self) -> &mut Self::Primitive

source§

fn into_inner(self) -> Self::Primitive

source§

fn load(&self, order: Ordering) -> Self::Primitive

source§

fn store(&self, val: Self::Primitive, order: Ordering)

source§

fn swap(&self, val: Self::Primitive, order: Ordering) -> Self::Primitive

source§

fn compare_exchange(
    &self,
    current: Self::Primitive,
    new: Self::Primitive,
    success: Ordering,
    failure: Ordering
) -> Result<Self::Primitive, Self::Primitive>

source§

fn compare_exchange_weak(
    &self,
    current: Self::Primitive,
    new: Self::Primitive,
    success: Ordering,
    failure: Ordering
) -> Result<Self::Primitive, Self::Primitive>

source§

fn fetch_update<F: FnMut(Self::Primitive) -> Option<Self::Primitive>>(
    &self,
    set_order: Ordering,
    fetch_ordering: Ordering,
    f: F
) -> Result<Self::Primitive, Self::Primitive>

source§

impl Atomic for AtomicIsize

§

type Primitive = isize

source§

fn new(v: Self::Primitive) -> Self

source§

fn get_mut(&mut self) -> &mut Self::Primitive

source§

fn into_inner(self) -> Self::Primitive

source§

fn load(&self, order: Ordering) -> Self::Primitive

source§

fn store(&self, val: Self::Primitive, order: Ordering)

source§

fn swap(&self, val: Self::Primitive, order: Ordering) -> Self::Primitive

source§

fn compare_exchange(
    &self,
    current: Self::Primitive,
    new: Self::Primitive,
    success: Ordering,
    failure: Ordering
) -> Result<Self::Primitive, Self::Primitive>

source§

fn compare_exchange_weak(
    &self,
    current: Self::Primitive,
    new: Self::Primitive,
    success: Ordering,
    failure: Ordering
) -> Result<Self::Primitive, Self::Primitive>

source§

fn fetch_update<F: FnMut(Self::Primitive) -> Option<Self::Primitive>>(
    &self,
    set_order: Ordering,
    fetch_ordering: Ordering,
    f: F
) -> Result<Self::Primitive, Self::Primitive>

source§

impl Atomic for AtomicBool

§

type Primitive = bool

source§

fn new(v: Self::Primitive) -> Self

source§

fn get_mut(&mut self) -> &mut Self::Primitive

source§

fn into_inner(self) -> Self::Primitive

source§

fn load(&self, order: Ordering) -> Self::Primitive

source§

fn store(&self, val: Self::Primitive, order: Ordering)

source§

fn swap(&self, val: Self::Primitive, order: Ordering) -> Self::Primitive

source§

fn compare_exchange(
    &self,
    current: Self::Primitive,
    new: Self::Primitive,
    success: Ordering,
    failure: Ordering
) -> Result<Self::Primitive, Self::Primitive>

source§

fn compare_exchange_weak(
    &self,
    current: Self::Primitive,
    new: Self::Primitive,
    success: Ordering,
    failure: Ordering
) -> Result<Self::Primitive, Self::Primitive>

source§

fn fetch_update<F: FnMut(Self::Primitive) -> Option<Self::Primitive>>(
    &self,
    set_order: Ordering,
    fetch_ordering: Ordering,
    f: F
) -> Result<Self::Primitive, Self::Primitive>

source§

impl<T> Atomic for AtomicPtr<T>

§

type Primitive = *mut T

source§

fn new(v: Self::Primitive) -> Self

source§

fn get_mut(&mut self) -> &mut Self::Primitive

source§

fn into_inner(self) -> Self::Primitive

source§

fn load(&self, order: Ordering) -> Self::Primitive

source§

fn store(&self, val: Self::Primitive, order: Ordering)

source§

fn swap(&self, val: Self::Primitive, order: Ordering) -> Self::Primitive

source§

fn compare_exchange(
    &self,
    current: Self::Primitive,
    new: Self::Primitive,
    success: Ordering,
    failure: Ordering
) -> Result<Self::Primitive, Self::Primitive>

source§

fn compare_exchange_weak(
    &self,
    current: Self::Primitive,
    new: Self::Primitive,
    success: Ordering,
    failure: Ordering
) -> Result<Self::Primitive, Self::Primitive>

source§

fn fetch_update<F: FnMut(Self::Primitive) -> Option<Self::Primitive>>(
    &self,
    set_order: Ordering,
    fetch_ordering: Ordering,
    f: F
) -> Result<Self::Primitive, Self::Primitive>

Implementors§