Auto merge of #44436 - MicroJoe:master, r=alexcrichton
Add Duration::from_micros This fixes #44400 that explains why it could be useful for embedded designs timing.
This commit is contained in:
commit
24831c7221
1 changed files with 23 additions and 0 deletions
|
|
@ -13,7 +13,9 @@ use ops::{Add, Sub, Mul, Div, AddAssign, SubAssign, MulAssign, DivAssign};
|
|||
|
||||
const NANOS_PER_SEC: u32 = 1_000_000_000;
|
||||
const NANOS_PER_MILLI: u32 = 1_000_000;
|
||||
const NANOS_PER_MICRO: u32 = 1_000;
|
||||
const MILLIS_PER_SEC: u64 = 1_000;
|
||||
const MICROS_PER_SEC: u64 = 1_000_000;
|
||||
|
||||
/// A `Duration` type to represent a span of time, typically used for system
|
||||
/// timeouts.
|
||||
|
|
@ -116,6 +118,27 @@ impl Duration {
|
|||
Duration { secs: secs, nanos: nanos }
|
||||
}
|
||||
|
||||
/// Creates a new `Duration` from the specified number of microseconds.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
/// #![feature(duration_from_micros)]
|
||||
/// use std::time::Duration;
|
||||
///
|
||||
/// let duration = Duration::from_micros(1_000_002);
|
||||
///
|
||||
/// assert_eq!(1, duration.as_secs());
|
||||
/// assert_eq!(2000, duration.subsec_nanos());
|
||||
/// ```
|
||||
#[unstable(feature = "duration_from_micros", issue = "44400")]
|
||||
#[inline]
|
||||
pub fn from_micros(micros: u64) -> Duration {
|
||||
let secs = micros / MICROS_PER_SEC;
|
||||
let nanos = ((micros % MICROS_PER_SEC) as u32) * NANOS_PER_MICRO;
|
||||
Duration { secs: secs, nanos: nanos }
|
||||
}
|
||||
|
||||
/// Returns the number of _whole_ seconds contained by this `Duration`.
|
||||
///
|
||||
/// The returned value does not include the fractional (nanosecond) part of the
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue