Struct atomptr::AtomPtr

source ·
pub struct AtomPtr<T> { /* private fields */ }
Expand description

A safe atomic pointer wrapper

Implementations§

source§

impl<T> AtomPtr<T>

source

pub fn new(t: T) -> Self

Create a new atomic pointer for a type

source

pub fn get_ref(&self) -> Ref<T>

Get an immutable reference to the current value

source

pub fn swap(&self, new: T) -> Ref<T>

Swap the data entry with a new value, returning the old

source

pub fn compare_exchange(&self, prev: Ref<T>, new: T) -> CasResult<T>

Compare and swap this pointer for a new one

This API takes two pieces of data: a previously handed out data reference, and a new piece of data. The reference data will be compared to the existing value, and if they match, the new data is inserted into the pointer.

This API follows the AtomicPtr::compare_exchange API. The deprecated compare_and_swap API is not implemented.

source

pub fn compare_exchange_weak(&self, prev: Ref<T>, new: T) -> CasResult<T>

Compare and swap this pointer for a new one

Use this variant when called in a loop

Trait Implementations§

source§

impl<T: Clone> Clone for AtomPtr<T>

source§

fn clone(&self) -> AtomPtr<T>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<T: Debug> Debug for AtomPtr<T>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<T: Default> Default for AtomPtr<T>

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<T> Drop for AtomPtr<T>

source§

fn drop(&mut self)

Executes the destructor for this type. Read more
source§

impl<T> PartialEq for AtomPtr<T>

source§

fn eq(&self, other: &Self) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.

Auto Trait Implementations§

§

impl<T> RefUnwindSafe for AtomPtr<T>

§

impl<T> Send for AtomPtr<T>

§

impl<T> Sync for AtomPtr<T>

§

impl<T> Unpin for AtomPtr<T>

§

impl<T> UnwindSafe for AtomPtr<T>

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.