From 4db499ff10c057f3ba4167594d2b3b57c5109ad3 Mon Sep 17 00:00:00 2001 From: Romain Porte Date: Fri, 8 Sep 2017 23:02:56 +0200 Subject: [PATCH 1/6] Add Duration::from_micros --- src/libstd/time/duration.rs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/libstd/time/duration.rs b/src/libstd/time/duration.rs index d715a0d740b42..8c37c38bbc8f4 100644 --- a/src/libstd/time/duration.rs +++ b/src/libstd/time/duration.rs @@ -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_MICROS: 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. @@ -114,6 +116,27 @@ impl Duration { let secs = millis / MILLIS_PER_SEC; let nanos = ((millis % MILLIS_PER_SEC) as u32) * NANOS_PER_MILLI; Duration { secs: secs, nanos: nanos } + + /// Creates a new `Duration` from the specified number of microseconds. + /// + /// # Examples + /// + /// ``` + /// use std::time::Duration; + /// + /// let duration = Duration::from_micros(1_000_002); + /// + /// assert_eq!(1, duration.as_secs()); + /// assert_eq!(2000, duration.subsec_nanos()); + /// ``` + #[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`. From 376837b999dc4a6ec271080957cd46b59bb5cc32 Mon Sep 17 00:00:00 2001 From: Romain Porte Date: Sat, 9 Sep 2017 11:46:58 +0200 Subject: [PATCH 2/6] from_micros: Inlined return for consistency --- src/libstd/time/duration.rs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/libstd/time/duration.rs b/src/libstd/time/duration.rs index 8c37c38bbc8f4..43cc2b880f7ac 100644 --- a/src/libstd/time/duration.rs +++ b/src/libstd/time/duration.rs @@ -133,10 +133,7 @@ impl Duration { 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, - } + Duration { secs: secs, nanos: nanos } } /// Returns the number of _whole_ seconds contained by this `Duration`. From 2e6aed8f476f732cbc7f8d3bb21adb4b67fb688e Mon Sep 17 00:00:00 2001 From: Romain Porte Date: Sat, 9 Sep 2017 11:49:32 +0200 Subject: [PATCH 3/6] from_micros: Added unstable annotation --- src/libstd/time/duration.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libstd/time/duration.rs b/src/libstd/time/duration.rs index 43cc2b880f7ac..baa86bfa133f3 100644 --- a/src/libstd/time/duration.rs +++ b/src/libstd/time/duration.rs @@ -129,6 +129,7 @@ impl Duration { /// assert_eq!(1, duration.as_secs()); /// assert_eq!(2000, duration.subsec_nanos()); /// ``` + #[unstable(feature = "", issue = "")] #[inline] pub fn from_micros(micros: u64) -> Duration { let secs = micros / MICROS_PER_SEC; From abc53cc140a923340d4abf3ed8360d903866886a Mon Sep 17 00:00:00 2001 From: Romain Porte Date: Sun, 10 Sep 2017 00:27:39 +0200 Subject: [PATCH 4/6] from_micros: Fix missing { --- src/libstd/time/duration.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libstd/time/duration.rs b/src/libstd/time/duration.rs index baa86bfa133f3..2612376704dc8 100644 --- a/src/libstd/time/duration.rs +++ b/src/libstd/time/duration.rs @@ -116,6 +116,7 @@ impl Duration { let secs = millis / MILLIS_PER_SEC; let nanos = ((millis % MILLIS_PER_SEC) as u32) * NANOS_PER_MILLI; Duration { secs: secs, nanos: nanos } + } /// Creates a new `Duration` from the specified number of microseconds. /// From a15c541a2afd08095d278249b345323c46ae23d3 Mon Sep 17 00:00:00 2001 From: Romain Porte Date: Sun, 10 Sep 2017 17:38:55 +0200 Subject: [PATCH 5/6] from_micros: added issue number and fixed typo --- src/libstd/time/duration.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libstd/time/duration.rs b/src/libstd/time/duration.rs index 2612376704dc8..9ef757076ba89 100644 --- a/src/libstd/time/duration.rs +++ b/src/libstd/time/duration.rs @@ -13,7 +13,7 @@ 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_MICROS: u32 = 1_000; +const NANOS_PER_MICRO: u32 = 1_000; const MILLIS_PER_SEC: u64 = 1_000; const MICROS_PER_SEC: u64 = 1_000_000; @@ -130,7 +130,7 @@ impl Duration { /// assert_eq!(1, duration.as_secs()); /// assert_eq!(2000, duration.subsec_nanos()); /// ``` - #[unstable(feature = "", issue = "")] + #[unstable(feature = "", issue = "44400")] #[inline] pub fn from_micros(micros: u64) -> Duration { let secs = micros / MICROS_PER_SEC; From b40a9f4ecac2d0da2c96576e63e456a868026245 Mon Sep 17 00:00:00 2001 From: Romain Porte Date: Wed, 13 Sep 2017 13:21:20 +0200 Subject: [PATCH 6/6] from_micros: add feature name --- src/libstd/time/duration.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/libstd/time/duration.rs b/src/libstd/time/duration.rs index 9ef757076ba89..86927ce322eae 100644 --- a/src/libstd/time/duration.rs +++ b/src/libstd/time/duration.rs @@ -123,6 +123,7 @@ impl Duration { /// # Examples /// /// ``` + /// #![feature(duration_from_micros)] /// use std::time::Duration; /// /// let duration = Duration::from_micros(1_000_002); @@ -130,7 +131,7 @@ impl Duration { /// assert_eq!(1, duration.as_secs()); /// assert_eq!(2000, duration.subsec_nanos()); /// ``` - #[unstable(feature = "", issue = "44400")] + #[unstable(feature = "duration_from_micros", issue = "44400")] #[inline] pub fn from_micros(micros: u64) -> Duration { let secs = micros / MICROS_PER_SEC;