gecko-dev/third_party/rust/zeitstempel
Jan-Erik Rediger e9bbd20895 Bug 1698518 - Upgrade Glean to get new time API. r=chutten
This also includes an upgrade of glean_parser to v2.5.0
This was done using the following command:

    ./mach vendor python glean_parser==2.5.0

Differential Revision: https://phabricator.services.mozilla.com/D108448
2021-03-18 11:21:27 +00:00
..
examples Bug 1698518 - Upgrade Glean to get new time API. r=chutten 2021-03-18 11:21:27 +00:00
src Bug 1698518 - Upgrade Glean to get new time API. r=chutten 2021-03-18 11:21:27 +00:00
.cargo-checksum.json Bug 1698518 - Upgrade Glean to get new time API. r=chutten 2021-03-18 11:21:27 +00:00
Cargo.lock Bug 1698518 - Upgrade Glean to get new time API. r=chutten 2021-03-18 11:21:27 +00:00
Cargo.toml Bug 1698518 - Upgrade Glean to get new time API. r=chutten 2021-03-18 11:21:27 +00:00
LICENSE Bug 1698518 - Upgrade Glean to get new time API. r=chutten 2021-03-18 11:21:27 +00:00
README.md Bug 1698518 - Upgrade Glean to get new time API. r=chutten 2021-03-18 11:21:27 +00:00

zeitstempel

Crates.io version docs.rs docs License: MPL 2.0 Build Status

zeitstempel is German for "timestamp".


Time's hard. Correct time is near impossible.

This crate has one purpose: give me a timestamp as an integer, coming from a monotonic clock source, include time across suspend/hibernation of the host machine and let me compare it to other timestamps.

It becomes the developer's responsibility to only compare timestamps obtained from this clock source. Timestamps are not comparable across operating system reboots.

Why not std::time::Instant?

std::time::Instant fulfills some of our requirements:

  • It's monotonic, guaranteed (sort of).
  • It can be compared to other timespans.

However:

  • It can't be serialized.
  • It's not guaranteed that the clock source it uses contains suspend/hibernation time across all operating systems.

Example

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

let start = zeitstempel::now();
thread::sleep(Duration::from_millis(2));

let diff = Duration::from_nanos(zeitstempel::now() - start);
assert!(diff >= Duration::from_millis(2));

Supported operating systems

We support the following operating systems:

  • Windows*
  • macOS
  • Linux
  • Android
  • iOS

For other operating systems there's a fallback to std::time::Instant, compared against a process-global fixed reference point. We don't guarantee that measured time includes time the system spends in sleep or hibernation.

* To use native Windows 10 functionality enable the win10plus feature. Otherwise it will use the fallback.

License

MPL 2.0. See LICENSE.