mio_more/lib.rs
1extern crate mio;
2extern crate lazycell;
3extern crate slab;
4
5#[macro_use]
6extern crate log;
7
8pub mod channel;
9pub mod timer;
10
11// Conversion utilities
12mod convert {
13 use std::time::Duration;
14
15 const NANOS_PER_MILLI: u32 = 1_000_000;
16 const MILLIS_PER_SEC: u64 = 1_000;
17
18 /// Convert a `Duration` to milliseconds, rounding up and saturating at
19 /// `u64::MAX`.
20 ///
21 /// The saturating is fine because `u64::MAX` milliseconds are still many
22 /// million years.
23 pub fn millis(duration: Duration) -> u64 {
24 // Round up.
25 let millis = (duration.subsec_nanos() + NANOS_PER_MILLI - 1) / NANOS_PER_MILLI;
26 duration.as_secs().saturating_mul(MILLIS_PER_SEC).saturating_add(millis as u64)
27 }
28}