time::ext

Trait InstantExt

Source
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§

Source

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.

Source

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.

Source

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§

Source

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.

Source

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§

Source§

impl InstantExt for Instant

Source§

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

Source§

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

Source§

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

Implementors§