Struct PausableInstant

Source
pub struct PausableInstant { /* private fields */ }
Expand description

Native representation of a paused instant that contains the reference time and the elapsed time on the clock from the reference time.

§Note on PartialOrd/Ord

The derived Ord and PartialOrd behavior is only valid for PausableInstants from the same clock. While the compare functions from ord and partial_ord can be called on PausableInstants from different clocks without panics, the results will have no guaranteed order

Implementations§

Source§

impl PausableInstant

Source

pub fn elapsed_millis(&self) -> u64

Get this pausable instant’s elapsed millis.

Source

pub fn zero_instant(&self) -> Instant

Get the instant this pausable instant is referenced off of

Source

pub fn elapsed(&self, originating_clock: &PausableClock) -> Duration

Get the elapsed time since this instant according to the given (and ideally originating) clock.

#Panics

This function will panic If the given clock produces a now() instant that is “before” this one. This is guaranteed not to happen if the given clock is the originating clock

Source

pub fn duration_since(&self, earlier: PausableInstant) -> Duration

Returns the amount of time elapsed from another instant to this one according to the pausable clock. Ideally the given instant is from the same pausable clock otherwise the resulting duration is meaningless.

#Panics

This function will panic if the given instant is “later” than this one.

Source

pub fn checked_duration_since( &self, earlier: &PausableInstant, ) -> Option<Duration>

Returns the amount of time elapsed from another instant to this one according to the pausable clock. Ideally the given instant is from the same pausable clock otherwise the resulting duration is meaningless.

This function will return None if the given instant is “later” than this one.

Source

pub fn saturating_duration_since(&self, earlier: &PausableInstant) -> Duration

Returns the amount of time elapsed from another instant to this one according to the pausable clock. Ideally the given instant is from the same pausable clock otherwise the resulting duration is meaningless.

This function will return zero if the given instant is “later” than this one.

Source

pub fn checked_add(&self, duration: Duration) -> Option<PausableInstant>

Returns Some(t) where t is the time self + duration if the given duration can be represented in milliseconds as a u64 and this pausable instant’s elapsed milliseconds plus the duration in millis can also be represented as a u64.

Effectively this means the resulting duration since the elapse millis needs to be less than about 500 million years.

Source

pub fn checked_sub(&self, duration: Duration) -> Option<PausableInstant>

Returns Some(t) where t is the time self - duration if the given duration can be represented in milliseconds as a u64, and this pausable instant’s elapsed milliseconds >= the duration in milliseconds

Effectively this means the given duration needs to be less than about 500 million years, and the resulting instant cannot be before the zero instant of this pausable instant.

Trait Implementations§

Source§

impl Add<Duration> for PausableInstant

Source§

fn add(self, other: Duration) -> Self::Output

#Panics

This function may panic if the resulting point in time cannot be represented by the underlying data structure. See PausableInstant::checked_add for a version without panic.

Source§

type Output = PausableInstant

The resulting type after applying the + operator.
Source§

impl AddAssign<Duration> for PausableInstant

Source§

fn add_assign(&mut self, other: Duration)

Performs the += operation. Read more
Source§

impl Clone for PausableInstant

Source§

fn clone(&self) -> PausableInstant

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 Debug for PausableInstant

Source§

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

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

impl From<PausableInstant> for Instant

Source§

fn from(source: PausableInstant) -> Self

Convert from the given pausable instant to a std instant. This is helpful for working with other libraries that need time info, but it has minor risks because once converted to a std instant, functions like elapsed() and duration_since() will produce unexpected results because those functions compare against the actual time and not the pausable time.

Source§

impl Hash for PausableInstant

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl Ord for PausableInstant

Source§

fn cmp(&self, other: &PausableInstant) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl PartialEq for PausableInstant

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl PartialOrd for PausableInstant

Source§

fn partial_cmp(&self, other: &PausableInstant) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

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

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

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

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

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

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

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

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl Sub<Duration> for PausableInstant

Source§

fn sub(self, other: Duration) -> PausableInstant

#Panics

This function may panic if the resulting point in time cannot be represented by the underlying data structure. See PausableInstant::checked_sub for a version without panic.

Source§

type Output = PausableInstant

The resulting type after applying the - operator.
Source§

impl Sub for PausableInstant

Source§

type Output = Duration

The resulting type after applying the - operator.
Source§

fn sub(self, other: PausableInstant) -> Duration

Performs the - operation. Read more
Source§

impl SubAssign<Duration> for PausableInstant

Source§

fn sub_assign(&mut self, other: Duration)

Performs the -= operation. Read more
Source§

impl Copy for PausableInstant

Source§

impl Eq for PausableInstant

Source§

impl StructuralPartialEq for PausableInstant

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. 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,

Source§

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

Source§

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

Source§

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.