adjusting_clock - smoothly adjusting for clock drift
A Rust crate for measuring time, while synchronizing it with an external source, for example adjusting the clock of a client to match the time one of a server.
The [Clock
] struct works as a stopwatch. After you create an instance of it, you can query how much time has passed since it started. The clock returns this as a [std::time::Duration
].
use ;
use Instant;
let clock = new;
// ... after a while:
let current = clock.elapsed;
The usefulness of Clock
comes from its ability to smoothly adjust its current time to match the time of another source:
use thread;
use ;
use ;
// Create a clock that adjusts at a speed of 10 ms per second:
let t0 = now;
let mut clock = new;
// Request the current time to be 10 ms.
// As the clock just started at 0, this is an adjustment of +10 ms from the current time:
clock.set_target;
// After taking time to adjust at a rate of 10 ms per second,
// the current time will have been adjusted:
sleep;
let elapsed = clock.elapsed;
//assert_eq!(elapsed, Duration::from_millis(1010)); // approx.
println!;
// Will print approximately 1010 ms, which is the sum of
// 10 because that's what the `set_target` call requested,
// and 1000 because that's how long time has passed since then.
See the test cases for more examples.