Struct arc_atomic::AtomicArc

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

An atomic pointer to an Arc.

This pointer provides a safe atomic pointer to an Arc. Each load will clone the Arc ensuring that concurrent reads/writes will only drop the value when all references are decremented. The inner Arc can be swapped atomically with another value.

This value is not itself cloneable and can itself be wrapped in an Arc.

Implementations§

source§

impl<T> AtomicArc<T>

source

pub fn new(arc: Arc<T>) -> Self

Creates a new atomic pointer to an Arc.

source

pub fn load(&self) -> Arc<T>

Load the current value cloning the inner Arc.

This will increment a reference count of the current Arc and return this to the caller.

source

pub fn store(&self, arc: Arc<T>)

Replace the current value, dropping the previously stored Arc.

source

pub fn swap(&self, arc: Arc<T>) -> Arc<T>

Swap the current value, returning the previously stored Arc.

The returned Arc may have additional references still held by other load calls previously requested.

Trait Implementations§

source§

impl<T: Debug> Debug for AtomicArc<T>

source§

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

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

impl<T> Drop for AtomicArc<T>

source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl<T> RefUnwindSafe for AtomicArc<T>

§

impl<T> Send for AtomicArc<T>

§

impl<T> Sync for AtomicArc<T>

§

impl<T> Unpin for AtomicArc<T>

§

impl<T> UnwindSafe for AtomicArc<T>
where T: RefUnwindSafe,

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, 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.