Providing wrapper types for safely performing panic-free checked arithmetic on instants and durations.
This crate provides the following two data structures.
easytime::Instant -- A wrapper type for [std::time::Instant]
easytime::Duration -- A wrapper type for [std::time::Duration]
Add this to your Cargo.toml:
toml
[dependencies]
easytime = "0.1"
The current version of easytime requires Rust 1.34 or later.
```rust use easytime::{Duration, Instant}; use std::time::Duration as StdDuration;
fn foo(secs: u64, nanos: u32, instant: Instant) -> Option
let dur = Duration::new(secs, nanos);
(now - instant - dur).into_inner()
} ```
If you use std::time directly, you need to write as follows:
```rust
use std::time::{Duration, Instant};
fn foo(secs: u64, nanos: u32, instant: Instant) -> Option
let secs = Duration::from_secs(secs);
let nanos = Duration::from_nanos(u64::from(nanos));
let dur = secs.checked_add(nanos)?;
now.checked_duration_since(instant)?.checked_sub(dur)
} ```
std (enabled by default)
easytime::Instant.Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.