1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//! This crate provides timers for use with tokio that rely on OS mechanisms for timer management
//! rather than a separate timing mechanism like [`tokio-timer`]. This comes at somewhat increased
//! overhead if you have many timers, but allows the timers to have any granularity supported by
//! your operating system where `tokio-timer` can only support timers with a granularity of 1ms.
//! In particular, the system timers usually support whatever granularity the underlying hardware
//! supports (see "High-resolution timers" in [`time(7)`]), which on my laptop is 1ns!
//! Realistically, you won't be able to make your timers higher resolution than how long system
//! calls on your system take, which is usually on the order of hundreds of nanoseconds.
//!
//! The current implementation uses [`timerfd_create(2)`] on Linux, and [`kqueue(2)` timers] on
//! macOS and BSDs.
//!
//!   [`tokio-timer`]: https://docs.rs/tokio-timer/
//!   [`timerfd_create(2)`]: https://linux.die.net/man/2/timerfd_settime
//!   [`kqueue(2)` timers]: https://man.openbsd.org/kqueue.2
//!   [`time(7)`]: https://linux.die.net/man/7/time

#![deny(missing_docs)]

mod delay;
pub use self::delay::Delay;

mod interval;
pub use self::interval::Interval;

mod sys;