[][src]Crate easytime

Providing wrapper types for safely performing panic-free checked arithmetic on instants and durations.

This crate provides the following two data structures.


use easytime::{Duration, Instant};
use std::time::Duration as StdDuration;

fn foo(secs: u64, nanos: u32, instant: Instant) -> Option<StdDuration> {
    let now = Instant::now();

    let dur = Duration::new(secs, nanos);
    (now - instant - dur).into_inner()

If you use std::time directly, you need to write as follows:


use std::time::{Duration, Instant};

fn foo(secs: u64, nanos: u32, instant: Instant) -> Option<Duration> {
    let now = Instant::now();

    let secs = Duration::from_secs(secs);
    let nanos = Duration::from_nanos(u64::from(nanos));

    let dur = secs.checked_add(nanos)?;

Optional features

  • std (enabled by default)
    • Enable to use easytime::Instant.
    • This requires Rust 1.34 or later.
    • If disabled this feature, easytime can compile with Rust 1.33.



A Duration type to represent a span of time, typically used for system timeouts.


A measurement of a monotonically nondecreasing clock. Opaque and useful only with Duration.