pub struct AtomicDuration { /* private fields */ }
Expand description

An atomic duration measured in nanoseconds.

A precise::AtomicDuration is a duration that is measured in nanoseconds and represented as an unsigned 64bit value. Since it is implemented using atomic primitives, it can be used when the duration needs interior mutability and atomic operations.

Implementations§

source§

impl AtomicDuration

source

pub fn new(value: Duration) -> Self

Create a new atomic duration.

source

pub fn from_secs(secs: u32) -> Self

Create a new atomic duration that represents the provided number of seconds.

source

pub fn from_nanos(nanos: u64) -> Self

Create a new atomic duration that represents the provided number of nanoseconds.

source

pub fn load(&self, ordering: Ordering) -> Duration

Loads the value of the duration.

See: core::sync::atomic::AtomicU64::load for a description of the memory orderings.

§Panics

Panics if ordering is Release or AcqRel.

source

pub fn store(&self, value: Duration, ordering: Ordering)

Stores a new value for the duration.

See: core::sync::atomic::AtomicU64::store for a description of the memory orderings.

§Panics

Panics if ordering is Acquire or AcqRel.

source

pub fn swap(&self, value: Duration, ordering: Ordering) -> Duration

Replaces the value of the duration and returns the previous value.

See: core::sync::atomic::AtomicU64::swap for a description of the memory orderings.

Note: This method is only available on platforms that support atomic operations on u64.

source

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

Stores a new value for the duration if the current duration is the same as the current duration.

See: core::sync::atomic::AtomicU64::compare_exchange for a description of the memory orderings.

Note: This method is only available on platforms that support atomic operations on u64.

source

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

Stores a new value for the duration if the current duration is the same as the current duration.

See: core::sync::atomic::AtomicU64::compare_exchange_weak for a description of the memory orderings.

Unlike AtomicDuration::compare_exchange, this function is allowed to spuriously fail. This allows for more efficient code on some platforms.

Note: This method is only available on platforms that support atomic operations on u64.

source

pub fn fetch_add(&self, value: Duration, ordering: Ordering) -> Duration

Adds to the current duration, returning the previous duration.

This operation wraps around on overflow.

See: core::sync::atomic::AtomicU64::fetch_add for a description of the memory orderings.

Note: This method is only available on platforms that support atomic operations on u64.

source

pub fn fetch_max(&self, value: Duration, ordering: Ordering) -> Duration

Maximum with the current duration.

Finds the maximum of the current duration and the argument value, and sets the new duration to the result.

Returns the previous duration.

See: core::sync::atomic::AtomicU64::fetch_max for a description of the memory orderings.

Note: This method is only available on platforms that support atomic operations on u64.

source

pub fn fetch_min(&self, value: Duration, ordering: Ordering) -> Duration

Minimum with the current duration.

Finds the minimum of the current duration and the argument val, and sets the new duration to the result.

Returns the previous duration.

See: core::sync::atomic::AtomicU64::fetch_min for a description of the memory orderings.

Note: This method is only available on platforms that support atomic operations on u64.

source

pub fn fetch_sub(&self, value: Duration, ordering: Ordering) -> Duration

Subtracts from the current duration, returning the previous duration.

This operation wraps around on overflow.

See: core::sync::atomic::AtomicU64::fetch_sub for a description of the memory orderings.

Note: This method is only available on platforms that support atomic operations on u64.

Trait Implementations§

source§

impl Debug for AtomicDuration

source§

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

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

impl Default for AtomicDuration

source§

fn default() -> AtomicDuration

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

impl From<Duration> for AtomicDuration

source§

fn from(other: Duration) -> Self

Converts to this type from the input type.
source§

impl From<Duration> for AtomicDuration

source§

fn from(other: Duration) -> Self

Converts to this type from the input type.
source§

impl TryFrom<Duration> for AtomicDuration

§

type Error = TryFromError

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

fn try_from(other: Duration) -> Result<Self, Self::Error>

Performs the conversion.

Auto Trait Implementations§

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.