pub struct AtomicPolymorphicValue { /* private fields */ }Expand description
Atomic polymorphic value for concurrent access
Supports lock-free reads and compare-and-swap updates for inline values. Heap values require external synchronization.
Implementations§
Source§impl AtomicPolymorphicValue
impl AtomicPolymorphicValue
Sourcepub fn from_inline(v: &PolymorphicValue) -> Option<Self>
pub fn from_inline(v: &PolymorphicValue) -> Option<Self>
Create from a polymorphic value (must be inline)
Sourcepub fn store(&self, value: &PolymorphicValue, order: Ordering)
pub fn store(&self, value: &PolymorphicValue, order: Ordering)
Store a new value
Sourcepub fn compare_exchange(
&self,
current: &PolymorphicValue,
new: &PolymorphicValue,
success: Ordering,
failure: Ordering,
) -> Result<u64, u64>
pub fn compare_exchange( &self, current: &PolymorphicValue, new: &PolymorphicValue, success: Ordering, failure: Ordering, ) -> Result<u64, u64>
Compare and swap
Sourcepub fn try_as_int(&self, order: Ordering) -> Option<i64>
pub fn try_as_int(&self, order: Ordering) -> Option<i64>
Try to get as integer (lock-free)
Auto Trait Implementations§
impl !Freeze for AtomicPolymorphicValue
impl RefUnwindSafe for AtomicPolymorphicValue
impl Send for AtomicPolymorphicValue
impl Sync for AtomicPolymorphicValue
impl Unpin for AtomicPolymorphicValue
impl UnsafeUnpin for AtomicPolymorphicValue
impl UnwindSafe for AtomicPolymorphicValue
Blanket Implementations§
impl<T> Allocation for T
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more