[][src]Struct quanta::Instant

pub struct Instant(_);

A point-in-time wall-clock measurement.

Represents a time measurement that has been taken by Clock and scaled to reference time, which is relative to the Unix epoch of 1970-01-01T00:00:00Z.

Unlike the stdlib Instant, this type has a meaningful difference: it is intended to be opaque, but the internal value can be accessed. There are no guarantees here and depending on this value directly is proceeding at your own risk. ⚠️

An Instant is 8 bytes.

Implementations

impl Instant[src]

pub fn now() -> Instant[src]

Gets the current time, scaled to reference time.

This method depends on a lazily initialized global clock, which can take up to 200ms to initialize and calibrate itself.

This method is the spiritual equivalent of std::time::Instant::now. It is guaranteed to return a monotonically increasing value.

pub fn recent() -> Instant[src]

Gets the most recent current time, scaled to reference time.

This method provides ultra-low-overhead access to a slightly-delayed version of the current time. Instead of querying the underlying source clock directly, a shared, global value is read directly without the need to scale to reference time.

The value is updated by running an "upkeep" thread or by calling [quanta::set_recent]. An upkeep thread can be configured and spawned via [Builder].

If the upkeep thread has not been started, or no value has been set manually, a lazily initialized global clock will be used to get the current time. This clock can take up to 200ms to initialize and calibrate itself.

pub fn duration_since(&self, earlier: Instant) -> Duration[src]

Returns the amount of time elapsed from another instant to this one.

Panics

This function will panic if earlier is later than self.

Examples

use quanta::Clock;
use std::time::Duration;
use std::thread::sleep;

let mut clock = Clock::new();
let now = clock.now();
sleep(Duration::new(1, 0));
let new_now = clock.now();
println!("{:?}", new_now.duration_since(now));

pub fn checked_duration_since(&self, earlier: Instant) -> Option<Duration>[src]

Returns the amount of time elapsed from another instant to this one, or None if that instant is earlier than this one.

Examples

use quanta::Clock;
use std::time::Duration;
use std::thread::sleep;

let mut clock = Clock::new();
let now = clock.now();
sleep(Duration::new(1, 0));
let new_now = clock.now();
println!("{:?}", new_now.checked_duration_since(now));
println!("{:?}", now.checked_duration_since(new_now)); // None

pub fn saturating_duration_since(&self, earlier: Instant) -> Duration[src]

Returns the amount of time elapsed from another instant to this one, or zero duration if that instant is earlier than this one.

Examples

use quanta::Clock;
use std::time::Duration;
use std::thread::sleep;

let mut clock = Clock::new();
let now = clock.now();
sleep(Duration::new(1, 0));
let new_now = clock.now();
println!("{:?}", new_now.saturating_duration_since(now));
println!("{:?}", now.saturating_duration_since(new_now)); // 0ns

pub fn checked_add(&self, duration: Duration) -> Option<Instant>[src]

Returns Some(t) where t is the time self + duration if t can be represented as Instant (which means it's inside the bounds of the underlying data structure), None otherwise.

pub fn checked_sub(&self, duration: Duration) -> Option<Instant>[src]

Returns Some(t) where t is the time self - duration if t can be represented as Instant (which means it's inside the bounds of the underlying data structure), None otherwise.

pub fn as_unix_duration(&self) -> Duration[src]

Gets this Instant as a Duration since the Unix epoch.

pub fn as_u64(&self) -> u64[src]

Gets the inner value of this Instant.

Trait Implementations

impl Add<Duration> for Instant[src]

type Output = Instant

The resulting type after applying the + operator.

pub fn add(self, other: Duration) -> Instant[src]

Panics

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

impl AddAssign<Duration> for Instant[src]

impl AsNanoseconds for Instant[src]

impl Clone for Instant[src]

impl Copy for Instant[src]

impl Debug for Instant[src]

impl Eq for Instant[src]

impl Into<Timestamp> for Instant[src]

impl Ord for Instant[src]

impl PartialEq<Instant> for Instant[src]

impl PartialOrd<Instant> for Instant[src]

impl StructuralEq for Instant[src]

impl StructuralPartialEq for Instant[src]

impl Sub<Duration> for Instant[src]

type Output = Instant

The resulting type after applying the - operator.

impl Sub<Instant> for Instant[src]

type Output = Duration

The resulting type after applying the - operator.

impl SubAssign<Duration> for Instant[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.