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§
Required Methods§
sourcefn fence(order: Ordering)
fn fence(order: Ordering)
If the implementor is atomic, this calls atomic::fence
with the
given Ordering
; otherwise, it does nothing.
sourcefn get_mut(&mut self) -> &mut Self::Item
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.
sourcefn into_inner(self) -> Self::Item
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.
sourcefn load(&self, order: Ordering) -> Self::Item
fn load(&self, order: Ordering) -> Self::Item
Loads a value from this object.
Non-atomic implementors ignore the ordering value.
See also: AtomicUsize::load
.
sourcefn store(&self, value: Self::Item, order: Ordering)
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
.
sourcefn swap(&self, value: Self::Item, order: Ordering) -> Self::Item
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
.
sourcefn compare_and_swap(
&self,
current: Self::Item,
new: Self::Item,
order: Ordering
) -> Self::Item
fn compare_and_swap( &self, current: Self::Item, new: Self::Item, order: Ordering ) -> Self::Item
compare_exchange
or compare_exchange_weak
insteadStores 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
.
sourcefn compare_exchange(
&self,
current: Self::Item,
new: Self::Item,
success: Ordering,
failure: Ordering
) -> Result<Self::Item, Self::Item>
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
.
sourcefn compare_exchange_weak(
&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>
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
.
sourcefn fetch_and(&self, value: Self::Item, order: Ordering) -> Self::Item
fn fetch_and(&self, value: Self::Item, order: Ordering) -> Self::Item
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
.
sourcefn fetch_nand(&self, value: Self::Item, order: Ordering) -> Self::Item
fn fetch_nand(&self, value: Self::Item, order: Ordering) -> Self::Item
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
.
sourcefn fetch_or(&self, value: Self::Item, order: Ordering) -> Self::Item
fn fetch_or(&self, value: Self::Item, order: Ordering) -> Self::Item
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
.
sourcefn fetch_xor(&self, value: Self::Item, order: Ordering) -> Self::Item
fn fetch_xor(&self, value: Self::Item, order: Ordering) -> Self::Item
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
.
sourcefn fetch_add(&self, value: Self::Item, order: Ordering) -> Self::Itemwhere
Self::Item: NumericOps,
fn fetch_add(&self, value: Self::Item, order: Ordering) -> Self::Itemwhere
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
.
sourcefn fetch_sub(&self, value: Self::Item, order: Ordering) -> Self::Itemwhere
Self::Item: NumericOps,
fn fetch_sub(&self, value: Self::Item, order: Ordering) -> Self::Itemwhere
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
.
sourcefn fetch_max(&self, value: Self::Item, order: Ordering) -> Self::Itemwhere
Self::Item: NumericOps,
fn fetch_max(&self, value: Self::Item, order: Ordering) -> Self::Itemwhere
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
.
sourcefn fetch_min(&self, value: Self::Item, order: Ordering) -> Self::Itemwhere
Self::Item: NumericOps,
fn fetch_min(&self, value: Self::Item, order: Ordering) -> Self::Itemwhere
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
.
sourcefn fetch_update<F>(
&self,
set_order: Ordering,
fetch_order: Ordering,
f: F
) -> Result<Self::Item, Self::Item>
fn fetch_update<F>( &self, set_order: Ordering, fetch_order: Ordering, f: F ) -> Result<Self::Item, 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§
Implementations on Foreign Types§
source§impl Radium for Cell<bool>
impl Radium for Cell<bool>
type Item = bool
fn new(value: bool) -> Self
fn fence(_: Ordering)
fn get_mut(&mut self) -> &mut bool
fn into_inner(self) -> bool
fn load(&self, _: Ordering) -> bool
fn store(&self, value: bool, _: Ordering)
fn swap(&self, value: bool, _: Ordering) -> bool
source§fn compare_and_swap(&self, current: bool, new: bool, _: Ordering) -> bool
fn compare_and_swap(&self, current: bool, new: bool, _: Ordering) -> bool
compare_exchange
or compare_exchange_weak
insteadfn compare_exchange( &self, current: bool, new: bool, _: Ordering, _: Ordering ) -> Result<bool, bool>
fn compare_exchange_weak( &self, current: bool, new: bool, success: Ordering, failure: Ordering ) -> Result<bool, bool>
fn fetch_and(&self, value: bool, _: Ordering) -> bool
fn fetch_nand(&self, value: bool, _: Ordering) -> bool
fn fetch_or(&self, value: bool, _: Ordering) -> bool
fn fetch_xor(&self, value: bool, _: Ordering) -> bool
fn fetch_add(&self, _: Self::Item, _: Ordering) -> Self::Item
fn fetch_sub(&self, _: Self::Item, _: Ordering) -> Self::Item
fn fetch_max(&self, _: Self::Item, _: Ordering) -> Self::Item
fn fetch_min(&self, _: Self::Item, _: Ordering) -> Self::Item
fn fetch_update<F>( &self, _: Ordering, _: Ordering, func: F ) -> Result<bool, bool>
source§impl Radium for Cell<i8>
impl Radium for Cell<i8>
type Item = i8
fn new(value: i8) -> Self
fn fence(_: Ordering)
fn get_mut(&mut self) -> &mut i8
fn into_inner(self) -> i8
fn load(&self, _: Ordering) -> i8
fn store(&self, value: i8, _: Ordering)
fn swap(&self, value: i8, _: Ordering) -> i8
source§fn compare_and_swap(&self, current: i8, new: i8, _: Ordering) -> i8
fn compare_and_swap(&self, current: i8, new: i8, _: Ordering) -> i8
compare_exchange
or compare_exchange_weak
insteadfn compare_exchange( &self, current: i8, new: i8, _: Ordering, _: Ordering ) -> Result<i8, i8>
fn compare_exchange_weak( &self, current: i8, new: i8, success: Ordering, failure: Ordering ) -> Result<i8, i8>
fn fetch_and(&self, value: i8, _: Ordering) -> i8
fn fetch_nand(&self, value: i8, _: Ordering) -> i8
fn fetch_or(&self, value: i8, _: Ordering) -> i8
fn fetch_xor(&self, value: i8, _: Ordering) -> i8
fn fetch_add(&self, value: i8, _: Ordering) -> i8
fn fetch_sub(&self, value: i8, _: Ordering) -> i8
fn fetch_max(&self, value: i8, _: Ordering) -> i8
fn fetch_min(&self, value: i8, _: Ordering) -> i8
fn fetch_update<F>(&self, _: Ordering, _: Ordering, func: F) -> Result<i8, i8>
source§impl Radium for Cell<i16>
impl Radium for Cell<i16>
type Item = i16
fn new(value: i16) -> Self
fn fence(_: Ordering)
fn get_mut(&mut self) -> &mut i16
fn into_inner(self) -> i16
fn load(&self, _: Ordering) -> i16
fn store(&self, value: i16, _: Ordering)
fn swap(&self, value: i16, _: Ordering) -> i16
source§fn compare_and_swap(&self, current: i16, new: i16, _: Ordering) -> i16
fn compare_and_swap(&self, current: i16, new: i16, _: Ordering) -> i16
compare_exchange
or compare_exchange_weak
insteadfn compare_exchange( &self, current: i16, new: i16, _: Ordering, _: Ordering ) -> Result<i16, i16>
fn compare_exchange_weak( &self, current: i16, new: i16, success: Ordering, failure: Ordering ) -> Result<i16, i16>
fn fetch_and(&self, value: i16, _: Ordering) -> i16
fn fetch_nand(&self, value: i16, _: Ordering) -> i16
fn fetch_or(&self, value: i16, _: Ordering) -> i16
fn fetch_xor(&self, value: i16, _: Ordering) -> i16
fn fetch_add(&self, value: i16, _: Ordering) -> i16
fn fetch_sub(&self, value: i16, _: Ordering) -> i16
fn fetch_max(&self, value: i16, _: Ordering) -> i16
fn fetch_min(&self, value: i16, _: Ordering) -> i16
fn fetch_update<F>(&self, _: Ordering, _: Ordering, func: F) -> Result<i16, i16>
source§impl Radium for Cell<i32>
impl Radium for Cell<i32>
type Item = i32
fn new(value: i32) -> Self
fn fence(_: Ordering)
fn get_mut(&mut self) -> &mut i32
fn into_inner(self) -> i32
fn load(&self, _: Ordering) -> i32
fn store(&self, value: i32, _: Ordering)
fn swap(&self, value: i32, _: Ordering) -> i32
source§fn compare_and_swap(&self, current: i32, new: i32, _: Ordering) -> i32
fn compare_and_swap(&self, current: i32, new: i32, _: Ordering) -> i32
compare_exchange
or compare_exchange_weak
insteadfn compare_exchange( &self, current: i32, new: i32, _: Ordering, _: Ordering ) -> Result<i32, i32>
fn compare_exchange_weak( &self, current: i32, new: i32, success: Ordering, failure: Ordering ) -> Result<i32, i32>
fn fetch_and(&self, value: i32, _: Ordering) -> i32
fn fetch_nand(&self, value: i32, _: Ordering) -> i32
fn fetch_or(&self, value: i32, _: Ordering) -> i32
fn fetch_xor(&self, value: i32, _: Ordering) -> i32
fn fetch_add(&self, value: i32, _: Ordering) -> i32
fn fetch_sub(&self, value: i32, _: Ordering) -> i32
fn fetch_max(&self, value: i32, _: Ordering) -> i32
fn fetch_min(&self, value: i32, _: Ordering) -> i32
fn fetch_update<F>(&self, _: Ordering, _: Ordering, func: F) -> Result<i32, i32>
source§impl Radium for Cell<i64>
impl Radium for Cell<i64>
type Item = i64
fn new(value: i64) -> Self
fn fence(_: Ordering)
fn get_mut(&mut self) -> &mut i64
fn into_inner(self) -> i64
fn load(&self, _: Ordering) -> i64
fn store(&self, value: i64, _: Ordering)
fn swap(&self, value: i64, _: Ordering) -> i64
source§fn compare_and_swap(&self, current: i64, new: i64, _: Ordering) -> i64
fn compare_and_swap(&self, current: i64, new: i64, _: Ordering) -> i64
compare_exchange
or compare_exchange_weak
insteadfn compare_exchange( &self, current: i64, new: i64, _: Ordering, _: Ordering ) -> Result<i64, i64>
fn compare_exchange_weak( &self, current: i64, new: i64, success: Ordering, failure: Ordering ) -> Result<i64, i64>
fn fetch_and(&self, value: i64, _: Ordering) -> i64
fn fetch_nand(&self, value: i64, _: Ordering) -> i64
fn fetch_or(&self, value: i64, _: Ordering) -> i64
fn fetch_xor(&self, value: i64, _: Ordering) -> i64
fn fetch_add(&self, value: i64, _: Ordering) -> i64
fn fetch_sub(&self, value: i64, _: Ordering) -> i64
fn fetch_max(&self, value: i64, _: Ordering) -> i64
fn fetch_min(&self, value: i64, _: Ordering) -> i64
fn fetch_update<F>(&self, _: Ordering, _: Ordering, func: F) -> Result<i64, i64>
source§impl Radium for Cell<i128>
impl Radium for Cell<i128>
type Item = i128
fn new(value: i128) -> Self
fn fence(_: Ordering)
fn get_mut(&mut self) -> &mut i128
fn into_inner(self) -> i128
fn load(&self, _: Ordering) -> i128
fn store(&self, value: i128, _: Ordering)
fn swap(&self, value: i128, _: Ordering) -> i128
source§fn compare_and_swap(&self, current: i128, new: i128, _: Ordering) -> i128
fn compare_and_swap(&self, current: i128, new: i128, _: Ordering) -> i128
compare_exchange
or compare_exchange_weak
insteadfn compare_exchange( &self, current: i128, new: i128, _: Ordering, _: Ordering ) -> Result<i128, i128>
fn compare_exchange_weak( &self, current: i128, new: i128, success: Ordering, failure: Ordering ) -> Result<i128, i128>
fn fetch_and(&self, value: i128, _: Ordering) -> i128
fn fetch_nand(&self, value: i128, _: Ordering) -> i128
fn fetch_or(&self, value: i128, _: Ordering) -> i128
fn fetch_xor(&self, value: i128, _: Ordering) -> i128
fn fetch_add(&self, value: i128, _: Ordering) -> i128
fn fetch_sub(&self, value: i128, _: Ordering) -> i128
fn fetch_max(&self, value: i128, _: Ordering) -> i128
fn fetch_min(&self, value: i128, _: Ordering) -> i128
fn fetch_update<F>( &self, _: Ordering, _: Ordering, func: F ) -> Result<i128, i128>
source§impl Radium for Cell<isize>
impl Radium for Cell<isize>
type Item = isize
fn new(value: isize) -> Self
fn fence(_: Ordering)
fn get_mut(&mut self) -> &mut isize
fn into_inner(self) -> isize
fn load(&self, _: Ordering) -> isize
fn store(&self, value: isize, _: Ordering)
fn swap(&self, value: isize, _: Ordering) -> isize
source§fn compare_and_swap(&self, current: isize, new: isize, _: Ordering) -> isize
fn compare_and_swap(&self, current: isize, new: isize, _: Ordering) -> isize
compare_exchange
or compare_exchange_weak
insteadfn compare_exchange( &self, current: isize, new: isize, _: Ordering, _: Ordering ) -> Result<isize, isize>
fn compare_exchange_weak( &self, current: isize, new: isize, success: Ordering, failure: Ordering ) -> Result<isize, isize>
fn fetch_and(&self, value: isize, _: Ordering) -> isize
fn fetch_nand(&self, value: isize, _: Ordering) -> isize
fn fetch_or(&self, value: isize, _: Ordering) -> isize
fn fetch_xor(&self, value: isize, _: Ordering) -> isize
fn fetch_add(&self, value: isize, _: Ordering) -> isize
fn fetch_sub(&self, value: isize, _: Ordering) -> isize
fn fetch_max(&self, value: isize, _: Ordering) -> isize
fn fetch_min(&self, value: isize, _: Ordering) -> isize
fn fetch_update<F>( &self, _: Ordering, _: Ordering, func: F ) -> Result<isize, isize>
source§impl Radium for Cell<u8>
impl Radium for Cell<u8>
type Item = u8
fn new(value: u8) -> Self
fn fence(_: Ordering)
fn get_mut(&mut self) -> &mut u8
fn into_inner(self) -> u8
fn load(&self, _: Ordering) -> u8
fn store(&self, value: u8, _: Ordering)
fn swap(&self, value: u8, _: Ordering) -> u8
source§fn compare_and_swap(&self, current: u8, new: u8, _: Ordering) -> u8
fn compare_and_swap(&self, current: u8, new: u8, _: Ordering) -> u8
compare_exchange
or compare_exchange_weak
insteadfn compare_exchange( &self, current: u8, new: u8, _: Ordering, _: Ordering ) -> Result<u8, u8>
fn compare_exchange_weak( &self, current: u8, new: u8, success: Ordering, failure: Ordering ) -> Result<u8, u8>
fn fetch_and(&self, value: u8, _: Ordering) -> u8
fn fetch_nand(&self, value: u8, _: Ordering) -> u8
fn fetch_or(&self, value: u8, _: Ordering) -> u8
fn fetch_xor(&self, value: u8, _: Ordering) -> u8
fn fetch_add(&self, value: u8, _: Ordering) -> u8
fn fetch_sub(&self, value: u8, _: Ordering) -> u8
fn fetch_max(&self, value: u8, _: Ordering) -> u8
fn fetch_min(&self, value: u8, _: Ordering) -> u8
fn fetch_update<F>(&self, _: Ordering, _: Ordering, func: F) -> Result<u8, u8>
source§impl Radium for Cell<u16>
impl Radium for Cell<u16>
type Item = u16
fn new(value: u16) -> Self
fn fence(_: Ordering)
fn get_mut(&mut self) -> &mut u16
fn into_inner(self) -> u16
fn load(&self, _: Ordering) -> u16
fn store(&self, value: u16, _: Ordering)
fn swap(&self, value: u16, _: Ordering) -> u16
source§fn compare_and_swap(&self, current: u16, new: u16, _: Ordering) -> u16
fn compare_and_swap(&self, current: u16, new: u16, _: Ordering) -> u16
compare_exchange
or compare_exchange_weak
insteadfn compare_exchange( &self, current: u16, new: u16, _: Ordering, _: Ordering ) -> Result<u16, u16>
fn compare_exchange_weak( &self, current: u16, new: u16, success: Ordering, failure: Ordering ) -> Result<u16, u16>
fn fetch_and(&self, value: u16, _: Ordering) -> u16
fn fetch_nand(&self, value: u16, _: Ordering) -> u16
fn fetch_or(&self, value: u16, _: Ordering) -> u16
fn fetch_xor(&self, value: u16, _: Ordering) -> u16
fn fetch_add(&self, value: u16, _: Ordering) -> u16
fn fetch_sub(&self, value: u16, _: Ordering) -> u16
fn fetch_max(&self, value: u16, _: Ordering) -> u16
fn fetch_min(&self, value: u16, _: Ordering) -> u16
fn fetch_update<F>(&self, _: Ordering, _: Ordering, func: F) -> Result<u16, u16>
source§impl Radium for Cell<u32>
impl Radium for Cell<u32>
type Item = u32
fn new(value: u32) -> Self
fn fence(_: Ordering)
fn get_mut(&mut self) -> &mut u32
fn into_inner(self) -> u32
fn load(&self, _: Ordering) -> u32
fn store(&self, value: u32, _: Ordering)
fn swap(&self, value: u32, _: Ordering) -> u32
source§fn compare_and_swap(&self, current: u32, new: u32, _: Ordering) -> u32
fn compare_and_swap(&self, current: u32, new: u32, _: Ordering) -> u32
compare_exchange
or compare_exchange_weak
insteadfn compare_exchange( &self, current: u32, new: u32, _: Ordering, _: Ordering ) -> Result<u32, u32>
fn compare_exchange_weak( &self, current: u32, new: u32, success: Ordering, failure: Ordering ) -> Result<u32, u32>
fn fetch_and(&self, value: u32, _: Ordering) -> u32
fn fetch_nand(&self, value: u32, _: Ordering) -> u32
fn fetch_or(&self, value: u32, _: Ordering) -> u32
fn fetch_xor(&self, value: u32, _: Ordering) -> u32
fn fetch_add(&self, value: u32, _: Ordering) -> u32
fn fetch_sub(&self, value: u32, _: Ordering) -> u32
fn fetch_max(&self, value: u32, _: Ordering) -> u32
fn fetch_min(&self, value: u32, _: Ordering) -> u32
fn fetch_update<F>(&self, _: Ordering, _: Ordering, func: F) -> Result<u32, u32>
source§impl Radium for Cell<u64>
impl Radium for Cell<u64>
type Item = u64
fn new(value: u64) -> Self
fn fence(_: Ordering)
fn get_mut(&mut self) -> &mut u64
fn into_inner(self) -> u64
fn load(&self, _: Ordering) -> u64
fn store(&self, value: u64, _: Ordering)
fn swap(&self, value: u64, _: Ordering) -> u64
source§fn compare_and_swap(&self, current: u64, new: u64, _: Ordering) -> u64
fn compare_and_swap(&self, current: u64, new: u64, _: Ordering) -> u64
compare_exchange
or compare_exchange_weak
insteadfn compare_exchange( &self, current: u64, new: u64, _: Ordering, _: Ordering ) -> Result<u64, u64>
fn compare_exchange_weak( &self, current: u64, new: u64, success: Ordering, failure: Ordering ) -> Result<u64, u64>
fn fetch_and(&self, value: u64, _: Ordering) -> u64
fn fetch_nand(&self, value: u64, _: Ordering) -> u64
fn fetch_or(&self, value: u64, _: Ordering) -> u64
fn fetch_xor(&self, value: u64, _: Ordering) -> u64
fn fetch_add(&self, value: u64, _: Ordering) -> u64
fn fetch_sub(&self, value: u64, _: Ordering) -> u64
fn fetch_max(&self, value: u64, _: Ordering) -> u64
fn fetch_min(&self, value: u64, _: Ordering) -> u64
fn fetch_update<F>(&self, _: Ordering, _: Ordering, func: F) -> Result<u64, u64>
source§impl Radium for Cell<u128>
impl Radium for Cell<u128>
type Item = u128
fn new(value: u128) -> Self
fn fence(_: Ordering)
fn get_mut(&mut self) -> &mut u128
fn into_inner(self) -> u128
fn load(&self, _: Ordering) -> u128
fn store(&self, value: u128, _: Ordering)
fn swap(&self, value: u128, _: Ordering) -> u128
source§fn compare_and_swap(&self, current: u128, new: u128, _: Ordering) -> u128
fn compare_and_swap(&self, current: u128, new: u128, _: Ordering) -> u128
compare_exchange
or compare_exchange_weak
insteadfn compare_exchange( &self, current: u128, new: u128, _: Ordering, _: Ordering ) -> Result<u128, u128>
fn compare_exchange_weak( &self, current: u128, new: u128, success: Ordering, failure: Ordering ) -> Result<u128, u128>
fn fetch_and(&self, value: u128, _: Ordering) -> u128
fn fetch_nand(&self, value: u128, _: Ordering) -> u128
fn fetch_or(&self, value: u128, _: Ordering) -> u128
fn fetch_xor(&self, value: u128, _: Ordering) -> u128
fn fetch_add(&self, value: u128, _: Ordering) -> u128
fn fetch_sub(&self, value: u128, _: Ordering) -> u128
fn fetch_max(&self, value: u128, _: Ordering) -> u128
fn fetch_min(&self, value: u128, _: Ordering) -> u128
fn fetch_update<F>( &self, _: Ordering, _: Ordering, func: F ) -> Result<u128, u128>
source§impl Radium for Cell<usize>
impl Radium for Cell<usize>
type Item = usize
fn new(value: usize) -> Self
fn fence(_: Ordering)
fn get_mut(&mut self) -> &mut usize
fn into_inner(self) -> usize
fn load(&self, _: Ordering) -> usize
fn store(&self, value: usize, _: Ordering)
fn swap(&self, value: usize, _: Ordering) -> usize
source§fn compare_and_swap(&self, current: usize, new: usize, _: Ordering) -> usize
fn compare_and_swap(&self, current: usize, new: usize, _: Ordering) -> usize
compare_exchange
or compare_exchange_weak
insteadfn compare_exchange( &self, current: usize, new: usize, _: Ordering, _: Ordering ) -> Result<usize, usize>
fn compare_exchange_weak( &self, current: usize, new: usize, success: Ordering, failure: Ordering ) -> Result<usize, usize>
fn fetch_and(&self, value: usize, _: Ordering) -> usize
fn fetch_nand(&self, value: usize, _: Ordering) -> usize
fn fetch_or(&self, value: usize, _: Ordering) -> usize
fn fetch_xor(&self, value: usize, _: Ordering) -> usize
fn fetch_add(&self, value: usize, _: Ordering) -> usize
fn fetch_sub(&self, value: usize, _: Ordering) -> usize
fn fetch_max(&self, value: usize, _: Ordering) -> usize
fn fetch_min(&self, value: usize, _: Ordering) -> usize
fn fetch_update<F>( &self, _: Ordering, _: Ordering, func: F ) -> Result<usize, usize>
source§impl Radium for AtomicBool
impl Radium for AtomicBool
type Item = bool
fn new(value: bool) -> Self
fn fence(order: Ordering)
fn get_mut(&mut self) -> &mut bool
fn into_inner(self) -> bool
fn load(&self, order: Ordering) -> bool
fn store(&self, value: bool, order: Ordering)
fn swap(&self, value: bool, order: Ordering) -> bool
source§fn compare_and_swap(&self, current: bool, new: bool, order: Ordering) -> bool
fn compare_and_swap(&self, current: bool, new: bool, order: Ordering) -> bool
compare_exchange
or compare_exchange_weak
insteadfn compare_exchange( &self, current: bool, new: bool, success: Ordering, failure: Ordering ) -> Result<bool, bool>
fn compare_exchange_weak( &self, current: bool, new: bool, success: Ordering, failure: Ordering ) -> Result<bool, bool>
fn fetch_and(&self, value: bool, order: Ordering) -> bool
fn fetch_nand(&self, value: bool, order: Ordering) -> bool
fn fetch_or(&self, value: bool, order: Ordering) -> bool
fn fetch_xor(&self, value: bool, order: Ordering) -> bool
fn fetch_add(&self, _: Self::Item, _: Ordering) -> Self::Item
fn fetch_sub(&self, _: Self::Item, _: Ordering) -> Self::Item
fn fetch_max(&self, _: Self::Item, _: Ordering) -> Self::Item
fn fetch_min(&self, _: Self::Item, _: Ordering) -> Self::Item
fn fetch_update<F>( &self, set_order: Ordering, fetch_order: Ordering, func: F ) -> Result<bool, bool>
source§impl Radium for AtomicI8
impl Radium for AtomicI8
type Item = i8
fn new(value: i8) -> Self
fn fence(order: Ordering)
fn get_mut(&mut self) -> &mut i8
fn into_inner(self) -> i8
fn load(&self, order: Ordering) -> i8
fn store(&self, value: i8, order: Ordering)
fn swap(&self, value: i8, order: Ordering) -> i8
source§fn compare_and_swap(&self, current: i8, new: i8, order: Ordering) -> i8
fn compare_and_swap(&self, current: i8, new: i8, order: Ordering) -> i8
compare_exchange
or compare_exchange_weak
insteadfn compare_exchange( &self, current: i8, new: i8, success: Ordering, failure: Ordering ) -> Result<i8, i8>
fn compare_exchange_weak( &self, current: i8, new: i8, success: Ordering, failure: Ordering ) -> Result<i8, i8>
fn fetch_and(&self, value: i8, order: Ordering) -> i8
fn fetch_nand(&self, value: i8, order: Ordering) -> i8
fn fetch_or(&self, value: i8, order: Ordering) -> i8
fn fetch_xor(&self, value: i8, order: Ordering) -> i8
fn fetch_add(&self, value: i8, order: Ordering) -> i8
fn fetch_sub(&self, value: i8, order: Ordering) -> i8
fn fetch_max(&self, value: i8, order: Ordering) -> i8
fn fetch_min(&self, value: i8, order: Ordering) -> i8
fn fetch_update<F>( &self, set_order: Ordering, fetch_order: Ordering, func: F ) -> Result<i8, i8>
source§impl Radium for AtomicI16
impl Radium for AtomicI16
type Item = i16
fn new(value: i16) -> Self
fn fence(order: Ordering)
fn get_mut(&mut self) -> &mut i16
fn into_inner(self) -> i16
fn load(&self, order: Ordering) -> i16
fn store(&self, value: i16, order: Ordering)
fn swap(&self, value: i16, order: Ordering) -> i16
source§fn compare_and_swap(&self, current: i16, new: i16, order: Ordering) -> i16
fn compare_and_swap(&self, current: i16, new: i16, order: Ordering) -> i16
compare_exchange
or compare_exchange_weak
insteadfn compare_exchange( &self, current: i16, new: i16, success: Ordering, failure: Ordering ) -> Result<i16, i16>
fn compare_exchange_weak( &self, current: i16, new: i16, success: Ordering, failure: Ordering ) -> Result<i16, i16>
fn fetch_and(&self, value: i16, order: Ordering) -> i16
fn fetch_nand(&self, value: i16, order: Ordering) -> i16
fn fetch_or(&self, value: i16, order: Ordering) -> i16
fn fetch_xor(&self, value: i16, order: Ordering) -> i16
fn fetch_add(&self, value: i16, order: Ordering) -> i16
fn fetch_sub(&self, value: i16, order: Ordering) -> i16
fn fetch_max(&self, value: i16, order: Ordering) -> i16
fn fetch_min(&self, value: i16, order: Ordering) -> i16
fn fetch_update<F>( &self, set_order: Ordering, fetch_order: Ordering, func: F ) -> Result<i16, i16>
source§impl Radium for AtomicI32
impl Radium for AtomicI32
type Item = i32
fn new(value: i32) -> Self
fn fence(order: Ordering)
fn get_mut(&mut self) -> &mut i32
fn into_inner(self) -> i32
fn load(&self, order: Ordering) -> i32
fn store(&self, value: i32, order: Ordering)
fn swap(&self, value: i32, order: Ordering) -> i32
source§fn compare_and_swap(&self, current: i32, new: i32, order: Ordering) -> i32
fn compare_and_swap(&self, current: i32, new: i32, order: Ordering) -> i32
compare_exchange
or compare_exchange_weak
insteadfn compare_exchange( &self, current: i32, new: i32, success: Ordering, failure: Ordering ) -> Result<i32, i32>
fn compare_exchange_weak( &self, current: i32, new: i32, success: Ordering, failure: Ordering ) -> Result<i32, i32>
fn fetch_and(&self, value: i32, order: Ordering) -> i32
fn fetch_nand(&self, value: i32, order: Ordering) -> i32
fn fetch_or(&self, value: i32, order: Ordering) -> i32
fn fetch_xor(&self, value: i32, order: Ordering) -> i32
fn fetch_add(&self, value: i32, order: Ordering) -> i32
fn fetch_sub(&self, value: i32, order: Ordering) -> i32
fn fetch_max(&self, value: i32, order: Ordering) -> i32
fn fetch_min(&self, value: i32, order: Ordering) -> i32
fn fetch_update<F>( &self, set_order: Ordering, fetch_order: Ordering, func: F ) -> Result<i32, i32>
source§impl Radium for AtomicI64
impl Radium for AtomicI64
type Item = i64
fn new(value: i64) -> Self
fn fence(order: Ordering)
fn get_mut(&mut self) -> &mut i64
fn into_inner(self) -> i64
fn load(&self, order: Ordering) -> i64
fn store(&self, value: i64, order: Ordering)
fn swap(&self, value: i64, order: Ordering) -> i64
source§fn compare_and_swap(&self, current: i64, new: i64, order: Ordering) -> i64
fn compare_and_swap(&self, current: i64, new: i64, order: Ordering) -> i64
compare_exchange
or compare_exchange_weak
insteadfn compare_exchange( &self, current: i64, new: i64, success: Ordering, failure: Ordering ) -> Result<i64, i64>
fn compare_exchange_weak( &self, current: i64, new: i64, success: Ordering, failure: Ordering ) -> Result<i64, i64>
fn fetch_and(&self, value: i64, order: Ordering) -> i64
fn fetch_nand(&self, value: i64, order: Ordering) -> i64
fn fetch_or(&self, value: i64, order: Ordering) -> i64
fn fetch_xor(&self, value: i64, order: Ordering) -> i64
fn fetch_add(&self, value: i64, order: Ordering) -> i64
fn fetch_sub(&self, value: i64, order: Ordering) -> i64
fn fetch_max(&self, value: i64, order: Ordering) -> i64
fn fetch_min(&self, value: i64, order: Ordering) -> i64
fn fetch_update<F>( &self, set_order: Ordering, fetch_order: Ordering, func: F ) -> Result<i64, i64>
source§impl Radium for AtomicIsize
impl Radium for AtomicIsize
type Item = isize
fn new(value: isize) -> Self
fn fence(order: Ordering)
fn get_mut(&mut self) -> &mut isize
fn into_inner(self) -> isize
fn load(&self, order: Ordering) -> isize
fn store(&self, value: isize, order: Ordering)
fn swap(&self, value: isize, order: Ordering) -> isize
source§fn compare_and_swap(&self, current: isize, new: isize, order: Ordering) -> isize
fn compare_and_swap(&self, current: isize, new: isize, order: Ordering) -> isize
compare_exchange
or compare_exchange_weak
insteadfn compare_exchange( &self, current: isize, new: isize, success: Ordering, failure: Ordering ) -> Result<isize, isize>
fn compare_exchange_weak( &self, current: isize, new: isize, success: Ordering, failure: Ordering ) -> Result<isize, isize>
fn fetch_and(&self, value: isize, order: Ordering) -> isize
fn fetch_nand(&self, value: isize, order: Ordering) -> isize
fn fetch_or(&self, value: isize, order: Ordering) -> isize
fn fetch_xor(&self, value: isize, order: Ordering) -> isize
fn fetch_add(&self, value: isize, order: Ordering) -> isize
fn fetch_sub(&self, value: isize, order: Ordering) -> isize
fn fetch_max(&self, value: isize, order: Ordering) -> isize
fn fetch_min(&self, value: isize, order: Ordering) -> isize
fn fetch_update<F>( &self, set_order: Ordering, fetch_order: Ordering, func: F ) -> Result<isize, isize>
source§impl Radium for AtomicU8
impl Radium for AtomicU8
type Item = u8
fn new(value: u8) -> Self
fn fence(order: Ordering)
fn get_mut(&mut self) -> &mut u8
fn into_inner(self) -> u8
fn load(&self, order: Ordering) -> u8
fn store(&self, value: u8, order: Ordering)
fn swap(&self, value: u8, order: Ordering) -> u8
source§fn compare_and_swap(&self, current: u8, new: u8, order: Ordering) -> u8
fn compare_and_swap(&self, current: u8, new: u8, order: Ordering) -> u8
compare_exchange
or compare_exchange_weak
insteadfn compare_exchange( &self, current: u8, new: u8, success: Ordering, failure: Ordering ) -> Result<u8, u8>
fn compare_exchange_weak( &self, current: u8, new: u8, success: Ordering, failure: Ordering ) -> Result<u8, u8>
fn fetch_and(&self, value: u8, order: Ordering) -> u8
fn fetch_nand(&self, value: u8, order: Ordering) -> u8
fn fetch_or(&self, value: u8, order: Ordering) -> u8
fn fetch_xor(&self, value: u8, order: Ordering) -> u8
fn fetch_add(&self, value: u8, order: Ordering) -> u8
fn fetch_sub(&self, value: u8, order: Ordering) -> u8
fn fetch_max(&self, value: u8, order: Ordering) -> u8
fn fetch_min(&self, value: u8, order: Ordering) -> u8
fn fetch_update<F>( &self, set_order: Ordering, fetch_order: Ordering, func: F ) -> Result<u8, u8>
source§impl Radium for AtomicU16
impl Radium for AtomicU16
type Item = u16
fn new(value: u16) -> Self
fn fence(order: Ordering)
fn get_mut(&mut self) -> &mut u16
fn into_inner(self) -> u16
fn load(&self, order: Ordering) -> u16
fn store(&self, value: u16, order: Ordering)
fn swap(&self, value: u16, order: Ordering) -> u16
source§fn compare_and_swap(&self, current: u16, new: u16, order: Ordering) -> u16
fn compare_and_swap(&self, current: u16, new: u16, order: Ordering) -> u16
compare_exchange
or compare_exchange_weak
insteadfn compare_exchange( &self, current: u16, new: u16, success: Ordering, failure: Ordering ) -> Result<u16, u16>
fn compare_exchange_weak( &self, current: u16, new: u16, success: Ordering, failure: Ordering ) -> Result<u16, u16>
fn fetch_and(&self, value: u16, order: Ordering) -> u16
fn fetch_nand(&self, value: u16, order: Ordering) -> u16
fn fetch_or(&self, value: u16, order: Ordering) -> u16
fn fetch_xor(&self, value: u16, order: Ordering) -> u16
fn fetch_add(&self, value: u16, order: Ordering) -> u16
fn fetch_sub(&self, value: u16, order: Ordering) -> u16
fn fetch_max(&self, value: u16, order: Ordering) -> u16
fn fetch_min(&self, value: u16, order: Ordering) -> u16
fn fetch_update<F>( &self, set_order: Ordering, fetch_order: Ordering, func: F ) -> Result<u16, u16>
source§impl Radium for AtomicU32
impl Radium for AtomicU32
type Item = u32
fn new(value: u32) -> Self
fn fence(order: Ordering)
fn get_mut(&mut self) -> &mut u32
fn into_inner(self) -> u32
fn load(&self, order: Ordering) -> u32
fn store(&self, value: u32, order: Ordering)
fn swap(&self, value: u32, order: Ordering) -> u32
source§fn compare_and_swap(&self, current: u32, new: u32, order: Ordering) -> u32
fn compare_and_swap(&self, current: u32, new: u32, order: Ordering) -> u32
compare_exchange
or compare_exchange_weak
insteadfn compare_exchange( &self, current: u32, new: u32, success: Ordering, failure: Ordering ) -> Result<u32, u32>
fn compare_exchange_weak( &self, current: u32, new: u32, success: Ordering, failure: Ordering ) -> Result<u32, u32>
fn fetch_and(&self, value: u32, order: Ordering) -> u32
fn fetch_nand(&self, value: u32, order: Ordering) -> u32
fn fetch_or(&self, value: u32, order: Ordering) -> u32
fn fetch_xor(&self, value: u32, order: Ordering) -> u32
fn fetch_add(&self, value: u32, order: Ordering) -> u32
fn fetch_sub(&self, value: u32, order: Ordering) -> u32
fn fetch_max(&self, value: u32, order: Ordering) -> u32
fn fetch_min(&self, value: u32, order: Ordering) -> u32
fn fetch_update<F>( &self, set_order: Ordering, fetch_order: Ordering, func: F ) -> Result<u32, u32>
source§impl Radium for AtomicU64
impl Radium for AtomicU64
type Item = u64
fn new(value: u64) -> Self
fn fence(order: Ordering)
fn get_mut(&mut self) -> &mut u64
fn into_inner(self) -> u64
fn load(&self, order: Ordering) -> u64
fn store(&self, value: u64, order: Ordering)
fn swap(&self, value: u64, order: Ordering) -> u64
source§fn compare_and_swap(&self, current: u64, new: u64, order: Ordering) -> u64
fn compare_and_swap(&self, current: u64, new: u64, order: Ordering) -> u64
compare_exchange
or compare_exchange_weak
insteadfn compare_exchange( &self, current: u64, new: u64, success: Ordering, failure: Ordering ) -> Result<u64, u64>
fn compare_exchange_weak( &self, current: u64, new: u64, success: Ordering, failure: Ordering ) -> Result<u64, u64>
fn fetch_and(&self, value: u64, order: Ordering) -> u64
fn fetch_nand(&self, value: u64, order: Ordering) -> u64
fn fetch_or(&self, value: u64, order: Ordering) -> u64
fn fetch_xor(&self, value: u64, order: Ordering) -> u64
fn fetch_add(&self, value: u64, order: Ordering) -> u64
fn fetch_sub(&self, value: u64, order: Ordering) -> u64
fn fetch_max(&self, value: u64, order: Ordering) -> u64
fn fetch_min(&self, value: u64, order: Ordering) -> u64
fn fetch_update<F>( &self, set_order: Ordering, fetch_order: Ordering, func: F ) -> Result<u64, u64>
source§impl Radium for AtomicUsize
impl Radium for AtomicUsize
type Item = usize
fn new(value: usize) -> Self
fn fence(order: Ordering)
fn get_mut(&mut self) -> &mut usize
fn into_inner(self) -> usize
fn load(&self, order: Ordering) -> usize
fn store(&self, value: usize, order: Ordering)
fn swap(&self, value: usize, order: Ordering) -> usize
source§fn compare_and_swap(&self, current: usize, new: usize, order: Ordering) -> usize
fn compare_and_swap(&self, current: usize, new: usize, order: Ordering) -> usize
compare_exchange
or compare_exchange_weak
insteadfn compare_exchange( &self, current: usize, new: usize, success: Ordering, failure: Ordering ) -> Result<usize, usize>
fn compare_exchange_weak( &self, current: usize, new: usize, success: Ordering, failure: Ordering ) -> Result<usize, usize>
fn fetch_and(&self, value: usize, order: Ordering) -> usize
fn fetch_nand(&self, value: usize, order: Ordering) -> usize
fn fetch_or(&self, value: usize, order: Ordering) -> usize
fn fetch_xor(&self, value: usize, order: Ordering) -> usize
fn fetch_add(&self, value: usize, order: Ordering) -> usize
fn fetch_sub(&self, value: usize, order: Ordering) -> usize
fn fetch_max(&self, value: usize, order: Ordering) -> usize
fn fetch_min(&self, value: usize, order: Ordering) -> usize
fn fetch_update<F>( &self, set_order: Ordering, fetch_order: Ordering, func: F ) -> Result<usize, usize>
source§impl<T> Radium for Cell<*mut T>
impl<T> Radium for Cell<*mut T>
type Item = *mut T
fn new(value: *mut T) -> Self
fn fence(_: Ordering)
fn get_mut(&mut self) -> &mut *mut T
fn into_inner(self) -> *mut T
fn load(&self, _: Ordering) -> *mut T
fn store(&self, value: *mut T, _: Ordering)
fn swap(&self, value: *mut T, _: Ordering) -> *mut T
source§fn compare_and_swap(&self, current: *mut T, new: *mut T, _: Ordering) -> *mut T
fn compare_and_swap(&self, current: *mut T, new: *mut T, _: Ordering) -> *mut T
compare_exchange
or compare_exchange_weak
insteadfn compare_exchange( &self, current: *mut T, new: *mut T, _: Ordering, _: Ordering ) -> Result<*mut T, *mut T>
fn compare_exchange_weak( &self, current: *mut T, new: *mut T, success: Ordering, failure: Ordering ) -> Result<*mut T, *mut T>
fn fetch_and(&self, _: Self::Item, _: Ordering) -> Self::Item
fn fetch_nand(&self, _: Self::Item, _: Ordering) -> Self::Item
fn fetch_or(&self, _: Self::Item, _: Ordering) -> Self::Item
fn fetch_xor(&self, _: Self::Item, _: Ordering) -> Self::Item
fn fetch_add(&self, _: Self::Item, _: Ordering) -> Self::Item
fn fetch_sub(&self, _: Self::Item, _: Ordering) -> Self::Item
fn fetch_max(&self, _: Self::Item, _: Ordering) -> Self::Item
fn fetch_min(&self, _: Self::Item, _: Ordering) -> Self::Item
fn fetch_update<F>( &self, _: Ordering, _: Ordering, func: F ) -> Result<*mut T, *mut T>
source§impl<T> Radium for AtomicPtr<T>
impl<T> Radium for AtomicPtr<T>
type Item = *mut T
fn new(value: *mut T) -> Self
fn fence(order: Ordering)
fn get_mut(&mut self) -> &mut *mut T
fn into_inner(self) -> *mut T
fn load(&self, order: Ordering) -> *mut T
fn store(&self, value: *mut T, order: Ordering)
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
fn compare_and_swap( &self, current: *mut T, new: *mut T, order: Ordering ) -> *mut T
compare_exchange
or compare_exchange_weak
instead