pavex::time::ext

Trait InstantExt

pub trait InstantExt: Sealed {
    // Required methods
    fn checked_add_signed(&self, duration: Duration) -> Option<Self>;
    fn checked_sub_signed(&self, duration: Duration) -> Option<Self>;
    fn signed_duration_since(&self, earlier: Self) -> Duration;

    // Provided methods
    fn add_signed(self, duration: Duration) -> Self { ... }
    fn sub_signed(self, duration: Duration) -> Self { ... }
}
Expand description

An extension trait for std::time::Instant that adds methods for time::Durations.

Required Methods§

fn checked_add_signed(&self, duration: Duration) -> Option<Self>

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

fn checked_sub_signed(&self, duration: Duration) -> Option<Self>

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

fn signed_duration_since(&self, earlier: Self) -> Duration

Returns the amount of time elapsed from another instant to this one. This will be negative if earlier is later than self.

§Example
let now = Instant::now();
sleep(Duration::new(1, 0));
let new_now = Instant::now();
println!("{:?}", new_now.signed_duration_since(now)); // positive
println!("{:?}", now.signed_duration_since(new_now)); // negative

Provided Methods§

fn add_signed(self, duration: Duration) -> Self

§Panics

This function may panic if the resulting point in time cannot be represented by the underlying data structure. See InstantExt::checked_add_signed for a non-panicking version.

fn sub_signed(self, duration: Duration) -> Self

§Panics

This function may panic if the resulting point in time cannot be represented by the underlying data structure. See InstantExt::checked_sub_signed for a non-panicking version.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

§

impl InstantExt for Instant

§

fn checked_add_signed(&self, duration: Duration) -> Option<Instant>

§

fn checked_sub_signed(&self, duration: Duration) -> Option<Instant>

§

fn signed_duration_since(&self, earlier: Instant) -> Duration

Implementors§