Thanks to visit codestin.com
Credit goes to github.com

Skip to content

willnode/zeitstempel

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

zeitstempel

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

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, guaranteed with or without 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 with suspend time

# 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));

Example with only awake time

# use std::{thread, time::Duration};
let start = zeitstempel::now_awake();
thread::sleep(Duration::from_millis(2));

let diff = Duration::from_nanos(zeitstempel::now_awake() - 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 QueryPerformanceCounter.

License

MPL 2.0. See LICENSE.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 100.0%