Trait radium::Radium

source ·
pub unsafe trait Radium {
    type Item: Copy + PartialEq;

Show 19 methods // Required methods fn new(value: Self::Item) -> Self; fn fence(order: Ordering); fn get_mut(&mut self) -> &mut Self::Item; fn into_inner(self) -> Self::Item; fn load(&self, order: Ordering) -> Self::Item; fn store(&self, value: Self::Item, order: Ordering); fn swap(&self, value: Self::Item, order: Ordering) -> Self::Item; fn compare_and_swap( &self, current: Self::Item, new: Self::Item, order: Ordering ) -> Self::Item; fn compare_exchange( &self, current: Self::Item, new: Self::Item, success: Ordering, failure: Ordering ) -> Result<Self::Item, Self::Item>; fn compare_exchange_weak( &self, current: Self::Item, new: Self::Item, success: Ordering, failure: Ordering ) -> Result<Self::Item, Self::Item>; fn fetch_and(&self, value: Self::Item, order: Ordering) -> Self::Item where Self::Item: BitOps; fn fetch_nand(&self, value: Self::Item, order: Ordering) -> Self::Item where Self::Item: BitOps; fn fetch_or(&self, value: Self::Item, order: Ordering) -> Self::Item where Self::Item: BitOps; fn fetch_xor(&self, value: Self::Item, order: Ordering) -> Self::Item where Self::Item: BitOps; fn fetch_add(&self, value: Self::Item, order: Ordering) -> Self::Item where Self::Item: NumericOps; fn fetch_sub(&self, value: Self::Item, order: Ordering) -> Self::Item where Self::Item: NumericOps; fn fetch_max(&self, value: Self::Item, order: Ordering) -> Self::Item where Self::Item: NumericOps; fn fetch_min(&self, value: Self::Item, order: Ordering) -> Self::Item where Self::Item: NumericOps; fn fetch_update<F>( &self, set_order: Ordering, fetch_order: Ordering, f: F ) -> Result<Self::Item, Self::Item> where F: FnMut(Self::Item) -> Option<Self::Item>;
}
Expand description

Unified Shared-Mutable API

The Radium trait is a common interface for shared-mutable types. We provide implementations for the AtomicT and Cell<T> types in the standard library, as well as our alternative types. It mirrors the API of the Rust atomic types.

You should consult the Rust standard library documentation for the correct usage of all methods. While we refer to, and draw on, the Rust project’s work, we do not guarantee keeping our language up to date with it.

Some of the Radium methods are gated on marker types in order to prevent their use when the underlying primitive does not support them. For instance, pointers do not (at time of writing) support atomic bit-wise or numeric operations, and so cannot be used with any of the .fetch_modify() methods. Attempting to call these methods will cause a compiler error when the underlying primitive type is unsuitable.

Usage

You should use this trait as a type parameter in your API when you want to accept something that supports shared-mutability, but you don’t need to care about what it is. You will likely want to specify the Item to be a known type, by writing this bound: <R: Radium<Item = T>> where T is another generic parameter or a named primitive.

Radium does not provide any unified trait system for the Rust primitives! If you want to accept Radium::Item as a generic parameter, you will need to use another crate (for instance, funty) to describe behavior over generic primitives.

Non-Usage

If you do not wish to expose caller-specified shared-mutability in your API, you should instead use the radium::types module. The types in that module all implement Radium as their only behavior, but may be easier to use when you are describing particular data types.

Safety

This trait is marked as unsafe to implement, because it abstracts over types which can be mutated through a shared reference. The implementor is required to correctly synchronize writes that occur through Radium methods, and in particular, to never violate the Rust language’s rules about the invalid production of unique references.

Implementation

While we do not enforce any restrictions on Radium implementors, only types which are transparent wrappers over a Rust primitive should implement this. Out-of-line guards such as Mutex can technically satisfy its API requirements, but are not likely to be useful candidate types for these uses.

Required Associated Types§

source

type Item: Copy + PartialEq

The primitive type that this implementor makes shared-mutable.

Required Methods§

source

fn new(value: Self::Item) -> Self

Creates a new value of this type.

source

fn fence(order: Ordering)

If the implementor is atomic, this calls atomic::fence with the given Ordering; otherwise, it does nothing.

source

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

Returns a mutable reference to the underlying value.

This is safe because the mutable reference to self guarantees that no other references exist to this value.

source

fn into_inner(self) -> Self::Item

Consumes the wrapper and returns the contained value.

This is safe because consuming by value ensures that no other references exist.

source

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

Loads a value from this object.

Non-atomic implementors ignore the ordering value.

See also: AtomicUsize::load.

source

fn store(&self, value: Self::Item, order: Ordering)

Stores a value into this object.

Non-atomic implementors ignore the ordering value.

See also: AtomicUsize::store.

source

fn swap(&self, value: Self::Item, order: Ordering) -> Self::Item

Swaps a new value with the value stored in this object.

Non-atomic implementors ignore the ordering value.

See also: AtomicUsize::swap.

source

fn compare_and_swap( &self, current: Self::Item, new: Self::Item, order: Ordering ) -> Self::Item

👎Deprecated: Use compare_exchange or compare_exchange_weak instead

Stores a new value into this object if (and only if) the value currently stored in it is the same as the current argument.

The return value is always what the object contained before the call entered. If it is equal to the current argument, then the object has been updated to contain new.

Non-atomic implementors ignore the ordering value.

See also: AtomicUsize::compare_and_swap.

source

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

Stores a new value into this object if (and only if) the value currently stored in it is the same as the current argument.

The return value is a Result indicating whether the new value was written into this object, and containing the value this object contained when the call entered. On success, this value is guaranteed to be equal to current.

Non-atomic implementors ignore the ordering value.

See also: AtomicUsize::compare_exchange.

source

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

Stores a new value into this object if (and only if) the value currently stored in it is the same as the current argument.

Unlike compare_exchange, this function is allowed to spuriously fail even when the comparison succeeds, which can result in more efficient code on some platforms. The return value is a Result indicating whether the comparison succeeded and the new value was written, and containing the value this object contained when the call entered.

Non-atomic implementors ignore the ordering value.

See also: AtomicUsize::compare_exchange_weak.

source

fn fetch_and(&self, value: Self::Item, order: Ordering) -> Self::Item
where Self::Item: BitOps,

Performs a bit-wise AND on the currently-stored value and the argument. The result is stored into this object, and the previous value is returned.

Non-atomic implementors ignore the ordering value.

See also: AtomicUsize::fetch_and.

source

fn fetch_nand(&self, value: Self::Item, order: Ordering) -> Self::Item
where Self::Item: BitOps,

Performs a bit-wise NAND on the currently-stored value and the argument. The result is stored into this object, and the previous value is returned.

Non-atomic implementors ignore the ordering value.

See also: AtomicUsize::fetch_nand.

source

fn fetch_or(&self, value: Self::Item, order: Ordering) -> Self::Item
where Self::Item: BitOps,

Performs a bit-wise OR on the currently-stored value and the argument. The result is stored into this object, and the previous value is returned.

Non-atomic implementors ignore the ordering value.

See also: AtomicUsize::fetch_or.

source

fn fetch_xor(&self, value: Self::Item, order: Ordering) -> Self::Item
where Self::Item: BitOps,

Performs a bit-wise XOR on the currently-stored value and the argument. The result is stored into this object, and the previous value is returned.

Non-atomic implementors ignore the ordering value.

See also: AtomicUsize::fetch_xor.

source

fn fetch_add(&self, value: Self::Item, order: Ordering) -> Self::Item
where Self::Item: NumericOps,

Adds the argument into the currently-stored value, wrapping on overflow. The result is stored into this object, and the previous value is returned.

Non-atomic implementors ignore the ordering value.

See also: AtomicUsize::fetch_add.

source

fn fetch_sub(&self, value: Self::Item, order: Ordering) -> Self::Item
where Self::Item: NumericOps,

Subtracts the argument from the currently-stored value, wrapping on overflow. The result is stored into this object, and the previous value is returned.

Non-atomic implementors ignore the ordering value.

See also: AtomicUsize::fetch_sub.

source

fn fetch_max(&self, value: Self::Item, order: Ordering) -> Self::Item
where Self::Item: NumericOps,

Finds the maximum of the currently-stored value and the argument. The result is stored into this object, and the previous value is returned.

Non-atomic implementors ignore the ordering value.

See also: AtomicUsize::fetch_max.

source

fn fetch_min(&self, value: Self::Item, order: Ordering) -> Self::Item
where Self::Item: NumericOps,

Finds the minimum of the currently-stored value and the argument. The result is stored into this object, and the previous value is returned.

Non-atomic implementors ignore the ordering value.

See also: AtomicUsize::fetch_min.

source

fn fetch_update<F>( &self, set_order: Ordering, fetch_order: Ordering, f: F ) -> Result<Self::Item, Self::Item>
where F: FnMut(Self::Item) -> Option<Self::Item>,

Fetches the value, and applies a function to it that may produce a new value.

Note: this may call the generator function multiple times if the stored value is updated in between the fetch and store. However, when a store occurs successfully, the generator will have been applied only once to the fetched value. That is, this function will never store f(f(self.load())).

Returns Ok(fetched) if the generator produces Some new value which is successfully stored, or Err(fetched) if it produces None.

Non-atomic implementors ignore the ordering value.

See also: AtomicUsize::fetch_update.

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl Radium for Cell<bool>

§

type Item = bool

source§

fn new(value: bool) -> Self

source§

fn fence(_: Ordering)

source§

fn get_mut(&mut self) -> &mut bool

source§

fn into_inner(self) -> bool

source§

fn load(&self, _: Ordering) -> bool

source§

fn store(&self, value: bool, _: Ordering)

source§

fn swap(&self, value: bool, _: Ordering) -> bool

source§

fn compare_and_swap(&self, current: bool, new: bool, _: Ordering) -> bool

👎Deprecated: Use compare_exchange or compare_exchange_weak instead
source§

fn compare_exchange( &self, current: bool, new: bool, _: Ordering, _: Ordering ) -> Result<bool, bool>

source§

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

source§

fn fetch_and(&self, value: bool, _: Ordering) -> bool

source§

fn fetch_nand(&self, value: bool, _: Ordering) -> bool

source§

fn fetch_or(&self, value: bool, _: Ordering) -> bool

source§

fn fetch_xor(&self, value: bool, _: Ordering) -> bool

source§

fn fetch_add(&self, _: Self::Item, _: Ordering) -> Self::Item

source§

fn fetch_sub(&self, _: Self::Item, _: Ordering) -> Self::Item

source§

fn fetch_max(&self, _: Self::Item, _: Ordering) -> Self::Item

source§

fn fetch_min(&self, _: Self::Item, _: Ordering) -> Self::Item

source§

fn fetch_update<F>( &self, _: Ordering, _: Ordering, func: F ) -> Result<bool, bool>
where F: FnMut(bool) -> Option<bool>,

source§

impl Radium for Cell<i8>

§

type Item = i8

source§

fn new(value: i8) -> Self

source§

fn fence(_: Ordering)

source§

fn get_mut(&mut self) -> &mut i8

source§

fn into_inner(self) -> i8

source§

fn load(&self, _: Ordering) -> i8

source§

fn store(&self, value: i8, _: Ordering)

source§

fn swap(&self, value: i8, _: Ordering) -> i8

source§

fn compare_and_swap(&self, current: i8, new: i8, _: Ordering) -> i8

👎Deprecated: Use compare_exchange or compare_exchange_weak instead
source§

fn compare_exchange( &self, current: i8, new: i8, _: Ordering, _: Ordering ) -> Result<i8, i8>

source§

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

source§

fn fetch_and(&self, value: i8, _: Ordering) -> i8

source§

fn fetch_nand(&self, value: i8, _: Ordering) -> i8

source§

fn fetch_or(&self, value: i8, _: Ordering) -> i8

source§

fn fetch_xor(&self, value: i8, _: Ordering) -> i8

source§

fn fetch_add(&self, value: i8, _: Ordering) -> i8

source§

fn fetch_sub(&self, value: i8, _: Ordering) -> i8

source§

fn fetch_max(&self, value: i8, _: Ordering) -> i8

source§

fn fetch_min(&self, value: i8, _: Ordering) -> i8

source§

fn fetch_update<F>(&self, _: Ordering, _: Ordering, func: F) -> Result<i8, i8>
where F: FnMut(i8) -> Option<i8>,

source§

impl Radium for Cell<i16>

§

type Item = i16

source§

fn new(value: i16) -> Self

source§

fn fence(_: Ordering)

source§

fn get_mut(&mut self) -> &mut i16

source§

fn into_inner(self) -> i16

source§

fn load(&self, _: Ordering) -> i16

source§

fn store(&self, value: i16, _: Ordering)

source§

fn swap(&self, value: i16, _: Ordering) -> i16

source§

fn compare_and_swap(&self, current: i16, new: i16, _: Ordering) -> i16

👎Deprecated: Use compare_exchange or compare_exchange_weak instead
source§

fn compare_exchange( &self, current: i16, new: i16, _: Ordering, _: Ordering ) -> Result<i16, i16>

source§

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

source§

fn fetch_and(&self, value: i16, _: Ordering) -> i16

source§

fn fetch_nand(&self, value: i16, _: Ordering) -> i16

source§

fn fetch_or(&self, value: i16, _: Ordering) -> i16

source§

fn fetch_xor(&self, value: i16, _: Ordering) -> i16

source§

fn fetch_add(&self, value: i16, _: Ordering) -> i16

source§

fn fetch_sub(&self, value: i16, _: Ordering) -> i16

source§

fn fetch_max(&self, value: i16, _: Ordering) -> i16

source§

fn fetch_min(&self, value: i16, _: Ordering) -> i16

source§

fn fetch_update<F>(&self, _: Ordering, _: Ordering, func: F) -> Result<i16, i16>
where F: FnMut(i16) -> Option<i16>,

source§

impl Radium for Cell<i32>

§

type Item = i32

source§

fn new(value: i32) -> Self

source§

fn fence(_: Ordering)

source§

fn get_mut(&mut self) -> &mut i32

source§

fn into_inner(self) -> i32

source§

fn load(&self, _: Ordering) -> i32

source§

fn store(&self, value: i32, _: Ordering)

source§

fn swap(&self, value: i32, _: Ordering) -> i32

source§

fn compare_and_swap(&self, current: i32, new: i32, _: Ordering) -> i32

👎Deprecated: Use compare_exchange or compare_exchange_weak instead
source§

fn compare_exchange( &self, current: i32, new: i32, _: Ordering, _: Ordering ) -> Result<i32, i32>

source§

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

source§

fn fetch_and(&self, value: i32, _: Ordering) -> i32

source§

fn fetch_nand(&self, value: i32, _: Ordering) -> i32

source§

fn fetch_or(&self, value: i32, _: Ordering) -> i32

source§

fn fetch_xor(&self, value: i32, _: Ordering) -> i32

source§

fn fetch_add(&self, value: i32, _: Ordering) -> i32

source§

fn fetch_sub(&self, value: i32, _: Ordering) -> i32

source§

fn fetch_max(&self, value: i32, _: Ordering) -> i32

source§

fn fetch_min(&self, value: i32, _: Ordering) -> i32

source§

fn fetch_update<F>(&self, _: Ordering, _: Ordering, func: F) -> Result<i32, i32>
where F: FnMut(i32) -> Option<i32>,

source§

impl Radium for Cell<i64>

§

type Item = i64

source§

fn new(value: i64) -> Self

source§

fn fence(_: Ordering)

source§

fn get_mut(&mut self) -> &mut i64

source§

fn into_inner(self) -> i64

source§

fn load(&self, _: Ordering) -> i64

source§

fn store(&self, value: i64, _: Ordering)

source§

fn swap(&self, value: i64, _: Ordering) -> i64

source§

fn compare_and_swap(&self, current: i64, new: i64, _: Ordering) -> i64

👎Deprecated: Use compare_exchange or compare_exchange_weak instead
source§

fn compare_exchange( &self, current: i64, new: i64, _: Ordering, _: Ordering ) -> Result<i64, i64>

source§

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

source§

fn fetch_and(&self, value: i64, _: Ordering) -> i64

source§

fn fetch_nand(&self, value: i64, _: Ordering) -> i64

source§

fn fetch_or(&self, value: i64, _: Ordering) -> i64

source§

fn fetch_xor(&self, value: i64, _: Ordering) -> i64

source§

fn fetch_add(&self, value: i64, _: Ordering) -> i64

source§

fn fetch_sub(&self, value: i64, _: Ordering) -> i64

source§

fn fetch_max(&self, value: i64, _: Ordering) -> i64

source§

fn fetch_min(&self, value: i64, _: Ordering) -> i64

source§

fn fetch_update<F>(&self, _: Ordering, _: Ordering, func: F) -> Result<i64, i64>
where F: FnMut(i64) -> Option<i64>,

source§

impl Radium for Cell<i128>

§

type Item = i128

source§

fn new(value: i128) -> Self

source§

fn fence(_: Ordering)

source§

fn get_mut(&mut self) -> &mut i128

source§

fn into_inner(self) -> i128

source§

fn load(&self, _: Ordering) -> i128

source§

fn store(&self, value: i128, _: Ordering)

source§

fn swap(&self, value: i128, _: Ordering) -> i128

source§

fn compare_and_swap(&self, current: i128, new: i128, _: Ordering) -> i128

👎Deprecated: Use compare_exchange or compare_exchange_weak instead
source§

fn compare_exchange( &self, current: i128, new: i128, _: Ordering, _: Ordering ) -> Result<i128, i128>

source§

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

source§

fn fetch_and(&self, value: i128, _: Ordering) -> i128

source§

fn fetch_nand(&self, value: i128, _: Ordering) -> i128

source§

fn fetch_or(&self, value: i128, _: Ordering) -> i128

source§

fn fetch_xor(&self, value: i128, _: Ordering) -> i128

source§

fn fetch_add(&self, value: i128, _: Ordering) -> i128

source§

fn fetch_sub(&self, value: i128, _: Ordering) -> i128

source§

fn fetch_max(&self, value: i128, _: Ordering) -> i128

source§

fn fetch_min(&self, value: i128, _: Ordering) -> i128

source§

fn fetch_update<F>( &self, _: Ordering, _: Ordering, func: F ) -> Result<i128, i128>
where F: FnMut(i128) -> Option<i128>,

source§

impl Radium for Cell<isize>

§

type Item = isize

source§

fn new(value: isize) -> Self

source§

fn fence(_: Ordering)

source§

fn get_mut(&mut self) -> &mut isize

source§

fn into_inner(self) -> isize

source§

fn load(&self, _: Ordering) -> isize

source§

fn store(&self, value: isize, _: Ordering)

source§

fn swap(&self, value: isize, _: Ordering) -> isize

source§

fn compare_and_swap(&self, current: isize, new: isize, _: Ordering) -> isize

👎Deprecated: Use compare_exchange or compare_exchange_weak instead
source§

fn compare_exchange( &self, current: isize, new: isize, _: Ordering, _: Ordering ) -> Result<isize, isize>

source§

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

source§

fn fetch_and(&self, value: isize, _: Ordering) -> isize

source§

fn fetch_nand(&self, value: isize, _: Ordering) -> isize

source§

fn fetch_or(&self, value: isize, _: Ordering) -> isize

source§

fn fetch_xor(&self, value: isize, _: Ordering) -> isize

source§

fn fetch_add(&self, value: isize, _: Ordering) -> isize

source§

fn fetch_sub(&self, value: isize, _: Ordering) -> isize

source§

fn fetch_max(&self, value: isize, _: Ordering) -> isize

source§

fn fetch_min(&self, value: isize, _: Ordering) -> isize

source§

fn fetch_update<F>( &self, _: Ordering, _: Ordering, func: F ) -> Result<isize, isize>
where F: FnMut(isize) -> Option<isize>,

source§

impl Radium for Cell<u8>

§

type Item = u8

source§

fn new(value: u8) -> Self

source§

fn fence(_: Ordering)

source§

fn get_mut(&mut self) -> &mut u8

source§

fn into_inner(self) -> u8

source§

fn load(&self, _: Ordering) -> u8

source§

fn store(&self, value: u8, _: Ordering)

source§

fn swap(&self, value: u8, _: Ordering) -> u8

source§

fn compare_and_swap(&self, current: u8, new: u8, _: Ordering) -> u8

👎Deprecated: Use compare_exchange or compare_exchange_weak instead
source§

fn compare_exchange( &self, current: u8, new: u8, _: Ordering, _: Ordering ) -> Result<u8, u8>

source§

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

source§

fn fetch_and(&self, value: u8, _: Ordering) -> u8

source§

fn fetch_nand(&self, value: u8, _: Ordering) -> u8

source§

fn fetch_or(&self, value: u8, _: Ordering) -> u8

source§

fn fetch_xor(&self, value: u8, _: Ordering) -> u8

source§

fn fetch_add(&self, value: u8, _: Ordering) -> u8

source§

fn fetch_sub(&self, value: u8, _: Ordering) -> u8

source§

fn fetch_max(&self, value: u8, _: Ordering) -> u8

source§

fn fetch_min(&self, value: u8, _: Ordering) -> u8

source§

fn fetch_update<F>(&self, _: Ordering, _: Ordering, func: F) -> Result<u8, u8>
where F: FnMut(u8) -> Option<u8>,

source§

impl Radium for Cell<u16>

§

type Item = u16

source§

fn new(value: u16) -> Self

source§

fn fence(_: Ordering)

source§

fn get_mut(&mut self) -> &mut u16

source§

fn into_inner(self) -> u16

source§

fn load(&self, _: Ordering) -> u16

source§

fn store(&self, value: u16, _: Ordering)

source§

fn swap(&self, value: u16, _: Ordering) -> u16

source§

fn compare_and_swap(&self, current: u16, new: u16, _: Ordering) -> u16

👎Deprecated: Use compare_exchange or compare_exchange_weak instead
source§

fn compare_exchange( &self, current: u16, new: u16, _: Ordering, _: Ordering ) -> Result<u16, u16>

source§

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

source§

fn fetch_and(&self, value: u16, _: Ordering) -> u16

source§

fn fetch_nand(&self, value: u16, _: Ordering) -> u16

source§

fn fetch_or(&self, value: u16, _: Ordering) -> u16

source§

fn fetch_xor(&self, value: u16, _: Ordering) -> u16

source§

fn fetch_add(&self, value: u16, _: Ordering) -> u16

source§

fn fetch_sub(&self, value: u16, _: Ordering) -> u16

source§

fn fetch_max(&self, value: u16, _: Ordering) -> u16

source§

fn fetch_min(&self, value: u16, _: Ordering) -> u16

source§

fn fetch_update<F>(&self, _: Ordering, _: Ordering, func: F) -> Result<u16, u16>
where F: FnMut(u16) -> Option<u16>,

source§

impl Radium for Cell<u32>

§

type Item = u32

source§

fn new(value: u32) -> Self

source§

fn fence(_: Ordering)

source§

fn get_mut(&mut self) -> &mut u32

source§

fn into_inner(self) -> u32

source§

fn load(&self, _: Ordering) -> u32

source§

fn store(&self, value: u32, _: Ordering)

source§

fn swap(&self, value: u32, _: Ordering) -> u32

source§

fn compare_and_swap(&self, current: u32, new: u32, _: Ordering) -> u32

👎Deprecated: Use compare_exchange or compare_exchange_weak instead
source§

fn compare_exchange( &self, current: u32, new: u32, _: Ordering, _: Ordering ) -> Result<u32, u32>

source§

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

source§

fn fetch_and(&self, value: u32, _: Ordering) -> u32

source§

fn fetch_nand(&self, value: u32, _: Ordering) -> u32

source§

fn fetch_or(&self, value: u32, _: Ordering) -> u32

source§

fn fetch_xor(&self, value: u32, _: Ordering) -> u32

source§

fn fetch_add(&self, value: u32, _: Ordering) -> u32

source§

fn fetch_sub(&self, value: u32, _: Ordering) -> u32

source§

fn fetch_max(&self, value: u32, _: Ordering) -> u32

source§

fn fetch_min(&self, value: u32, _: Ordering) -> u32

source§

fn fetch_update<F>(&self, _: Ordering, _: Ordering, func: F) -> Result<u32, u32>
where F: FnMut(u32) -> Option<u32>,

source§

impl Radium for Cell<u64>

§

type Item = u64

source§

fn new(value: u64) -> Self

source§

fn fence(_: Ordering)

source§

fn get_mut(&mut self) -> &mut u64

source§

fn into_inner(self) -> u64

source§

fn load(&self, _: Ordering) -> u64

source§

fn store(&self, value: u64, _: Ordering)

source§

fn swap(&self, value: u64, _: Ordering) -> u64

source§

fn compare_and_swap(&self, current: u64, new: u64, _: Ordering) -> u64

👎Deprecated: Use compare_exchange or compare_exchange_weak instead
source§

fn compare_exchange( &self, current: u64, new: u64, _: Ordering, _: Ordering ) -> Result<u64, u64>

source§

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

source§

fn fetch_and(&self, value: u64, _: Ordering) -> u64

source§

fn fetch_nand(&self, value: u64, _: Ordering) -> u64

source§

fn fetch_or(&self, value: u64, _: Ordering) -> u64

source§

fn fetch_xor(&self, value: u64, _: Ordering) -> u64

source§

fn fetch_add(&self, value: u64, _: Ordering) -> u64

source§

fn fetch_sub(&self, value: u64, _: Ordering) -> u64

source§

fn fetch_max(&self, value: u64, _: Ordering) -> u64

source§

fn fetch_min(&self, value: u64, _: Ordering) -> u64

source§

fn fetch_update<F>(&self, _: Ordering, _: Ordering, func: F) -> Result<u64, u64>
where F: FnMut(u64) -> Option<u64>,

source§

impl Radium for Cell<u128>

§

type Item = u128

source§

fn new(value: u128) -> Self

source§

fn fence(_: Ordering)

source§

fn get_mut(&mut self) -> &mut u128

source§

fn into_inner(self) -> u128

source§

fn load(&self, _: Ordering) -> u128

source§

fn store(&self, value: u128, _: Ordering)

source§

fn swap(&self, value: u128, _: Ordering) -> u128

source§

fn compare_and_swap(&self, current: u128, new: u128, _: Ordering) -> u128

👎Deprecated: Use compare_exchange or compare_exchange_weak instead
source§

fn compare_exchange( &self, current: u128, new: u128, _: Ordering, _: Ordering ) -> Result<u128, u128>

source§

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

source§

fn fetch_and(&self, value: u128, _: Ordering) -> u128

source§

fn fetch_nand(&self, value: u128, _: Ordering) -> u128

source§

fn fetch_or(&self, value: u128, _: Ordering) -> u128

source§

fn fetch_xor(&self, value: u128, _: Ordering) -> u128

source§

fn fetch_add(&self, value: u128, _: Ordering) -> u128

source§

fn fetch_sub(&self, value: u128, _: Ordering) -> u128

source§

fn fetch_max(&self, value: u128, _: Ordering) -> u128

source§

fn fetch_min(&self, value: u128, _: Ordering) -> u128

source§

fn fetch_update<F>( &self, _: Ordering, _: Ordering, func: F ) -> Result<u128, u128>
where F: FnMut(u128) -> Option<u128>,

source§

impl Radium for Cell<usize>

§

type Item = usize

source§

fn new(value: usize) -> Self

source§

fn fence(_: Ordering)

source§

fn get_mut(&mut self) -> &mut usize

source§

fn into_inner(self) -> usize

source§

fn load(&self, _: Ordering) -> usize

source§

fn store(&self, value: usize, _: Ordering)

source§

fn swap(&self, value: usize, _: Ordering) -> usize

source§

fn compare_and_swap(&self, current: usize, new: usize, _: Ordering) -> usize

👎Deprecated: Use compare_exchange or compare_exchange_weak instead
source§

fn compare_exchange( &self, current: usize, new: usize, _: Ordering, _: Ordering ) -> Result<usize, usize>

source§

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

source§

fn fetch_and(&self, value: usize, _: Ordering) -> usize

source§

fn fetch_nand(&self, value: usize, _: Ordering) -> usize

source§

fn fetch_or(&self, value: usize, _: Ordering) -> usize

source§

fn fetch_xor(&self, value: usize, _: Ordering) -> usize

source§

fn fetch_add(&self, value: usize, _: Ordering) -> usize

source§

fn fetch_sub(&self, value: usize, _: Ordering) -> usize

source§

fn fetch_max(&self, value: usize, _: Ordering) -> usize

source§

fn fetch_min(&self, value: usize, _: Ordering) -> usize

source§

fn fetch_update<F>( &self, _: Ordering, _: Ordering, func: F ) -> Result<usize, usize>
where F: FnMut(usize) -> Option<usize>,

source§

impl Radium for AtomicBool

§

type Item = bool

source§

fn new(value: bool) -> Self

source§

fn fence(order: Ordering)

source§

fn get_mut(&mut self) -> &mut bool

source§

fn into_inner(self) -> bool

source§

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

source§

fn store(&self, value: bool, order: Ordering)

source§

fn swap(&self, value: bool, order: Ordering) -> bool

source§

fn compare_and_swap(&self, current: bool, new: bool, order: Ordering) -> bool

👎Deprecated: Use compare_exchange or compare_exchange_weak instead
source§

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

source§

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

source§

fn fetch_and(&self, value: bool, order: Ordering) -> bool

source§

fn fetch_nand(&self, value: bool, order: Ordering) -> bool

source§

fn fetch_or(&self, value: bool, order: Ordering) -> bool

source§

fn fetch_xor(&self, value: bool, order: Ordering) -> bool

source§

fn fetch_add(&self, _: Self::Item, _: Ordering) -> Self::Item

source§

fn fetch_sub(&self, _: Self::Item, _: Ordering) -> Self::Item

source§

fn fetch_max(&self, _: Self::Item, _: Ordering) -> Self::Item

source§

fn fetch_min(&self, _: Self::Item, _: Ordering) -> Self::Item

source§

fn fetch_update<F>( &self, set_order: Ordering, fetch_order: Ordering, func: F ) -> Result<bool, bool>
where F: FnMut(bool) -> Option<bool>,

source§

impl Radium for AtomicI8

§

type Item = i8

source§

fn new(value: i8) -> Self

source§

fn fence(order: Ordering)

source§

fn get_mut(&mut self) -> &mut i8

source§

fn into_inner(self) -> i8

source§

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

source§

fn store(&self, value: i8, order: Ordering)

source§

fn swap(&self, value: i8, order: Ordering) -> i8

source§

fn compare_and_swap(&self, current: i8, new: i8, order: Ordering) -> i8

👎Deprecated: Use compare_exchange or compare_exchange_weak instead
source§

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

source§

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

source§

fn fetch_and(&self, value: i8, order: Ordering) -> i8

source§

fn fetch_nand(&self, value: i8, order: Ordering) -> i8

source§

fn fetch_or(&self, value: i8, order: Ordering) -> i8

source§

fn fetch_xor(&self, value: i8, order: Ordering) -> i8

source§

fn fetch_add(&self, value: i8, order: Ordering) -> i8

source§

fn fetch_sub(&self, value: i8, order: Ordering) -> i8

source§

fn fetch_max(&self, value: i8, order: Ordering) -> i8

source§

fn fetch_min(&self, value: i8, order: Ordering) -> i8

source§

fn fetch_update<F>( &self, set_order: Ordering, fetch_order: Ordering, func: F ) -> Result<i8, i8>
where F: FnMut(i8) -> Option<i8>,

source§

impl Radium for AtomicI16

§

type Item = i16

source§

fn new(value: i16) -> Self

source§

fn fence(order: Ordering)

source§

fn get_mut(&mut self) -> &mut i16

source§

fn into_inner(self) -> i16

source§

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

source§

fn store(&self, value: i16, order: Ordering)

source§

fn swap(&self, value: i16, order: Ordering) -> i16

source§

fn compare_and_swap(&self, current: i16, new: i16, order: Ordering) -> i16

👎Deprecated: Use compare_exchange or compare_exchange_weak instead
source§

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

source§

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

source§

fn fetch_and(&self, value: i16, order: Ordering) -> i16

source§

fn fetch_nand(&self, value: i16, order: Ordering) -> i16

source§

fn fetch_or(&self, value: i16, order: Ordering) -> i16

source§

fn fetch_xor(&self, value: i16, order: Ordering) -> i16

source§

fn fetch_add(&self, value: i16, order: Ordering) -> i16

source§

fn fetch_sub(&self, value: i16, order: Ordering) -> i16

source§

fn fetch_max(&self, value: i16, order: Ordering) -> i16

source§

fn fetch_min(&self, value: i16, order: Ordering) -> i16

source§

fn fetch_update<F>( &self, set_order: Ordering, fetch_order: Ordering, func: F ) -> Result<i16, i16>
where F: FnMut(i16) -> Option<i16>,

source§

impl Radium for AtomicI32

§

type Item = i32

source§

fn new(value: i32) -> Self

source§

fn fence(order: Ordering)

source§

fn get_mut(&mut self) -> &mut i32

source§

fn into_inner(self) -> i32

source§

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

source§

fn store(&self, value: i32, order: Ordering)

source§

fn swap(&self, value: i32, order: Ordering) -> i32

source§

fn compare_and_swap(&self, current: i32, new: i32, order: Ordering) -> i32

👎Deprecated: Use compare_exchange or compare_exchange_weak instead
source§

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

source§

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

source§

fn fetch_and(&self, value: i32, order: Ordering) -> i32

source§

fn fetch_nand(&self, value: i32, order: Ordering) -> i32

source§

fn fetch_or(&self, value: i32, order: Ordering) -> i32

source§

fn fetch_xor(&self, value: i32, order: Ordering) -> i32

source§

fn fetch_add(&self, value: i32, order: Ordering) -> i32

source§

fn fetch_sub(&self, value: i32, order: Ordering) -> i32

source§

fn fetch_max(&self, value: i32, order: Ordering) -> i32

source§

fn fetch_min(&self, value: i32, order: Ordering) -> i32

source§

fn fetch_update<F>( &self, set_order: Ordering, fetch_order: Ordering, func: F ) -> Result<i32, i32>
where F: FnMut(i32) -> Option<i32>,

source§

impl Radium for AtomicI64

§

type Item = i64

source§

fn new(value: i64) -> Self

source§

fn fence(order: Ordering)

source§

fn get_mut(&mut self) -> &mut i64

source§

fn into_inner(self) -> i64

source§

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

source§

fn store(&self, value: i64, order: Ordering)

source§

fn swap(&self, value: i64, order: Ordering) -> i64

source§

fn compare_and_swap(&self, current: i64, new: i64, order: Ordering) -> i64

👎Deprecated: Use compare_exchange or compare_exchange_weak instead
source§

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

source§

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

source§

fn fetch_and(&self, value: i64, order: Ordering) -> i64

source§

fn fetch_nand(&self, value: i64, order: Ordering) -> i64

source§

fn fetch_or(&self, value: i64, order: Ordering) -> i64

source§

fn fetch_xor(&self, value: i64, order: Ordering) -> i64

source§

fn fetch_add(&self, value: i64, order: Ordering) -> i64

source§

fn fetch_sub(&self, value: i64, order: Ordering) -> i64

source§

fn fetch_max(&self, value: i64, order: Ordering) -> i64

source§

fn fetch_min(&self, value: i64, order: Ordering) -> i64

source§

fn fetch_update<F>( &self, set_order: Ordering, fetch_order: Ordering, func: F ) -> Result<i64, i64>
where F: FnMut(i64) -> Option<i64>,

source§

impl Radium for AtomicIsize

§

type Item = isize

source§

fn new(value: isize) -> Self

source§

fn fence(order: Ordering)

source§

fn get_mut(&mut self) -> &mut isize

source§

fn into_inner(self) -> isize

source§

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

source§

fn store(&self, value: isize, order: Ordering)

source§

fn swap(&self, value: isize, order: Ordering) -> isize

source§

fn compare_and_swap(&self, current: isize, new: isize, order: Ordering) -> isize

👎Deprecated: Use compare_exchange or compare_exchange_weak instead
source§

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

source§

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

source§

fn fetch_and(&self, value: isize, order: Ordering) -> isize

source§

fn fetch_nand(&self, value: isize, order: Ordering) -> isize

source§

fn fetch_or(&self, value: isize, order: Ordering) -> isize

source§

fn fetch_xor(&self, value: isize, order: Ordering) -> isize

source§

fn fetch_add(&self, value: isize, order: Ordering) -> isize

source§

fn fetch_sub(&self, value: isize, order: Ordering) -> isize

source§

fn fetch_max(&self, value: isize, order: Ordering) -> isize

source§

fn fetch_min(&self, value: isize, order: Ordering) -> isize

source§

fn fetch_update<F>( &self, set_order: Ordering, fetch_order: Ordering, func: F ) -> Result<isize, isize>
where F: FnMut(isize) -> Option<isize>,

source§

impl Radium for AtomicU8

§

type Item = u8

source§

fn new(value: u8) -> Self

source§

fn fence(order: Ordering)

source§

fn get_mut(&mut self) -> &mut u8

source§

fn into_inner(self) -> u8

source§

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

source§

fn store(&self, value: u8, order: Ordering)

source§

fn swap(&self, value: u8, order: Ordering) -> u8

source§

fn compare_and_swap(&self, current: u8, new: u8, order: Ordering) -> u8

👎Deprecated: Use compare_exchange or compare_exchange_weak instead
source§

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

source§

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

source§

fn fetch_and(&self, value: u8, order: Ordering) -> u8

source§

fn fetch_nand(&self, value: u8, order: Ordering) -> u8

source§

fn fetch_or(&self, value: u8, order: Ordering) -> u8

source§

fn fetch_xor(&self, value: u8, order: Ordering) -> u8

source§

fn fetch_add(&self, value: u8, order: Ordering) -> u8

source§

fn fetch_sub(&self, value: u8, order: Ordering) -> u8

source§

fn fetch_max(&self, value: u8, order: Ordering) -> u8

source§

fn fetch_min(&self, value: u8, order: Ordering) -> u8

source§

fn fetch_update<F>( &self, set_order: Ordering, fetch_order: Ordering, func: F ) -> Result<u8, u8>
where F: FnMut(u8) -> Option<u8>,

source§

impl Radium for AtomicU16

§

type Item = u16

source§

fn new(value: u16) -> Self

source§

fn fence(order: Ordering)

source§

fn get_mut(&mut self) -> &mut u16

source§

fn into_inner(self) -> u16

source§

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

source§

fn store(&self, value: u16, order: Ordering)

source§

fn swap(&self, value: u16, order: Ordering) -> u16

source§

fn compare_and_swap(&self, current: u16, new: u16, order: Ordering) -> u16

👎Deprecated: Use compare_exchange or compare_exchange_weak instead
source§

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

source§

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

source§

fn fetch_and(&self, value: u16, order: Ordering) -> u16

source§

fn fetch_nand(&self, value: u16, order: Ordering) -> u16

source§

fn fetch_or(&self, value: u16, order: Ordering) -> u16

source§

fn fetch_xor(&self, value: u16, order: Ordering) -> u16

source§

fn fetch_add(&self, value: u16, order: Ordering) -> u16

source§

fn fetch_sub(&self, value: u16, order: Ordering) -> u16

source§

fn fetch_max(&self, value: u16, order: Ordering) -> u16

source§

fn fetch_min(&self, value: u16, order: Ordering) -> u16

source§

fn fetch_update<F>( &self, set_order: Ordering, fetch_order: Ordering, func: F ) -> Result<u16, u16>
where F: FnMut(u16) -> Option<u16>,

source§

impl Radium for AtomicU32

§

type Item = u32

source§

fn new(value: u32) -> Self

source§

fn fence(order: Ordering)

source§

fn get_mut(&mut self) -> &mut u32

source§

fn into_inner(self) -> u32

source§

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

source§

fn store(&self, value: u32, order: Ordering)

source§

fn swap(&self, value: u32, order: Ordering) -> u32

source§

fn compare_and_swap(&self, current: u32, new: u32, order: Ordering) -> u32

👎Deprecated: Use compare_exchange or compare_exchange_weak instead
source§

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

source§

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

source§

fn fetch_and(&self, value: u32, order: Ordering) -> u32

source§

fn fetch_nand(&self, value: u32, order: Ordering) -> u32

source§

fn fetch_or(&self, value: u32, order: Ordering) -> u32

source§

fn fetch_xor(&self, value: u32, order: Ordering) -> u32

source§

fn fetch_add(&self, value: u32, order: Ordering) -> u32

source§

fn fetch_sub(&self, value: u32, order: Ordering) -> u32

source§

fn fetch_max(&self, value: u32, order: Ordering) -> u32

source§

fn fetch_min(&self, value: u32, order: Ordering) -> u32

source§

fn fetch_update<F>( &self, set_order: Ordering, fetch_order: Ordering, func: F ) -> Result<u32, u32>
where F: FnMut(u32) -> Option<u32>,

source§

impl Radium for AtomicU64

§

type Item = u64

source§

fn new(value: u64) -> Self

source§

fn fence(order: Ordering)

source§

fn get_mut(&mut self) -> &mut u64

source§

fn into_inner(self) -> u64

source§

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

source§

fn store(&self, value: u64, order: Ordering)

source§

fn swap(&self, value: u64, order: Ordering) -> u64

source§

fn compare_and_swap(&self, current: u64, new: u64, order: Ordering) -> u64

👎Deprecated: Use compare_exchange or compare_exchange_weak instead
source§

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

source§

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

source§

fn fetch_and(&self, value: u64, order: Ordering) -> u64

source§

fn fetch_nand(&self, value: u64, order: Ordering) -> u64

source§

fn fetch_or(&self, value: u64, order: Ordering) -> u64

source§

fn fetch_xor(&self, value: u64, order: Ordering) -> u64

source§

fn fetch_add(&self, value: u64, order: Ordering) -> u64

source§

fn fetch_sub(&self, value: u64, order: Ordering) -> u64

source§

fn fetch_max(&self, value: u64, order: Ordering) -> u64

source§

fn fetch_min(&self, value: u64, order: Ordering) -> u64

source§

fn fetch_update<F>( &self, set_order: Ordering, fetch_order: Ordering, func: F ) -> Result<u64, u64>
where F: FnMut(u64) -> Option<u64>,

source§

impl Radium for AtomicUsize

§

type Item = usize

source§

fn new(value: usize) -> Self

source§

fn fence(order: Ordering)

source§

fn get_mut(&mut self) -> &mut usize

source§

fn into_inner(self) -> usize

source§

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

source§

fn store(&self, value: usize, order: Ordering)

source§

fn swap(&self, value: usize, order: Ordering) -> usize

source§

fn compare_and_swap(&self, current: usize, new: usize, order: Ordering) -> usize

👎Deprecated: Use compare_exchange or compare_exchange_weak instead
source§

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

source§

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

source§

fn fetch_and(&self, value: usize, order: Ordering) -> usize

source§

fn fetch_nand(&self, value: usize, order: Ordering) -> usize

source§

fn fetch_or(&self, value: usize, order: Ordering) -> usize

source§

fn fetch_xor(&self, value: usize, order: Ordering) -> usize

source§

fn fetch_add(&self, value: usize, order: Ordering) -> usize

source§

fn fetch_sub(&self, value: usize, order: Ordering) -> usize

source§

fn fetch_max(&self, value: usize, order: Ordering) -> usize

source§

fn fetch_min(&self, value: usize, order: Ordering) -> usize

source§

fn fetch_update<F>( &self, set_order: Ordering, fetch_order: Ordering, func: F ) -> Result<usize, usize>
where F: FnMut(usize) -> Option<usize>,

source§

impl<T> Radium for Cell<*mut T>

§

type Item = *mut T

source§

fn new(value: *mut T) -> Self

source§

fn fence(_: Ordering)

source§

fn get_mut(&mut self) -> &mut *mut T

source§

fn into_inner(self) -> *mut T

source§

fn load(&self, _: Ordering) -> *mut T

source§

fn store(&self, value: *mut T, _: Ordering)

source§

fn swap(&self, value: *mut T, _: Ordering) -> *mut T

source§

fn compare_and_swap(&self, current: *mut T, new: *mut T, _: Ordering) -> *mut T

👎Deprecated: Use compare_exchange or compare_exchange_weak instead
source§

fn compare_exchange( &self, current: *mut T, new: *mut T, _: Ordering, _: Ordering ) -> Result<*mut T, *mut T>

source§

fn compare_exchange_weak( &self, current: *mut T, new: *mut T, success: Ordering, failure: Ordering ) -> Result<*mut T, *mut T>

source§

fn fetch_and(&self, _: Self::Item, _: Ordering) -> Self::Item

source§

fn fetch_nand(&self, _: Self::Item, _: Ordering) -> Self::Item

source§

fn fetch_or(&self, _: Self::Item, _: Ordering) -> Self::Item

source§

fn fetch_xor(&self, _: Self::Item, _: Ordering) -> Self::Item

source§

fn fetch_add(&self, _: Self::Item, _: Ordering) -> Self::Item

source§

fn fetch_sub(&self, _: Self::Item, _: Ordering) -> Self::Item

source§

fn fetch_max(&self, _: Self::Item, _: Ordering) -> Self::Item

source§

fn fetch_min(&self, _: Self::Item, _: Ordering) -> Self::Item

source§

fn fetch_update<F>( &self, _: Ordering, _: Ordering, func: F ) -> Result<*mut T, *mut T>
where F: FnMut(*mut T) -> Option<*mut T>,

source§

impl<T> Radium for AtomicPtr<T>

§

type Item = *mut T

source§

fn new(value: *mut T) -> Self

source§

fn fence(order: Ordering)

source§

fn get_mut(&mut self) -> &mut *mut T

source§

fn into_inner(self) -> *mut T

source§

fn load(&self, order: Ordering) -> *mut T

source§

fn store(&self, value: *mut T, order: Ordering)

source§

fn swap(&self, value: *mut T, order: Ordering) -> *mut T

source§

fn compare_and_swap( &self, current: *mut T, new: *mut T, order: Ordering ) -> *mut T

👎Deprecated: Use compare_exchange or compare_exchange_weak instead
source§

fn compare_exchange( &self, current: *mut T, new: *mut T, success: Ordering, failure: Ordering ) -> Result<*mut T, *mut T>

source§

fn compare_exchange_weak( &self, current: *mut T, new: *mut T, success: Ordering, failure: Ordering ) -> Result<*mut T, *mut T>

source§

fn fetch_and(&self, _: Self::Item, _: Ordering) -> Self::Item

source§

fn fetch_nand(&self, _: Self::Item, _: Ordering) -> Self::Item

source§

fn fetch_or(&self, _: Self::Item, _: Ordering) -> Self::Item

source§

fn fetch_xor(&self, _: Self::Item, _: Ordering) -> Self::Item

source§

fn fetch_add(&self, _: Self::Item, _: Ordering) -> Self::Item

source§

fn fetch_sub(&self, _: Self::Item, _: Ordering) -> Self::Item

source§

fn fetch_max(&self, _: Self::Item, _: Ordering) -> Self::Item

source§

fn fetch_min(&self, _: Self::Item, _: Ordering) -> Self::Item

source§

fn fetch_update<F>( &self, set_order: Ordering, fetch_order: Ordering, func: F ) -> Result<*mut T, *mut T>
where F: FnMut(*mut T) -> Option<*mut T>,

Implementors§

source§

impl<T> Radium for Atom<T>
where T: Atomic + PartialEq, T::Atom: Radium<Item = T>,

§

type Item = T

source§

impl<T> Radium for Isotope<T>
where T: Nuclear + PartialEq, T::Nucleus: Radium<Item = T>,

§

type Item = T

source§

impl<T> Radium for Radon<T>
where T: Nuclear + PartialEq, Cell<T>: Radium<Item = T>,

§

type Item = T