about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPavel Grigorenko <grigorenkopv@ya.ru>2024-03-14 01:37:12 +0300
committerPavel Grigorenko <grigorenkopv@ya.ru>2024-03-14 01:37:12 +0300
commitf2ec0d3d26dc31c84274b853cc04ce25371c8d3d (patch)
treee269b2ff74de23895b1985747ad2c5dad5c2494b
parent184c5ab1807a5e605cc8235d3734a97552768c22 (diff)
downloadrust-f2ec0d3d26dc31c84274b853cc04ce25371c8d3d.tar.gz
rust-f2ec0d3d26dc31c84274b853cc04ce25371c8d3d.zip
Implement `Duration::as_millis_{f64,f32}`
-rw-r--r--library/core/src/time.rs42
1 files changed, 42 insertions, 0 deletions
diff --git a/library/core/src/time.rs b/library/core/src/time.rs
index b533f539938..78494b866b1 100644
--- a/library/core/src/time.rs
+++ b/library/core/src/time.rs
@@ -856,6 +856,48 @@ impl Duration {
         (self.secs as f32) + (self.nanos.0 as f32) / (NANOS_PER_SEC as f32)
     }
 
+    /// Returns the number of milliseconds contained by this `Duration` as `f64`.
+    ///
+    /// The returned value does include the fractional (nanosecond) part of the duration.
+    ///
+    /// # Examples
+    /// ```
+    /// #![feature(duration_millis_float)]
+    /// use std::time::Duration;
+    ///
+    /// let dur = Duration::new(2, 345_678_000);
+    /// assert_eq!(dur.as_millis_f64(), 2345.678);
+    /// ```
+    #[unstable(feature = "duration_millis_float", issue = "122451")]
+    #[must_use]
+    #[inline]
+    #[rustc_const_unstable(feature = "duration_consts_float", issue = "72440")]
+    pub const fn as_millis_f64(&self) -> f64 {
+        (self.secs as f64) * (MILLIS_PER_SEC as f64)
+            + (self.nanos.0 as f64) / (NANOS_PER_MILLI as f64)
+    }
+
+    /// Returns the number of milliseconds contained by this `Duration` as `f32`.
+    ///
+    /// The returned value does include the fractional (nanosecond) part of the duration.
+    ///
+    /// # Examples
+    /// ```
+    /// #![feature(duration_millis_float)]
+    /// use std::time::Duration;
+    ///
+    /// let dur = Duration::new(2, 345_678_000);
+    /// assert_eq!(dur.as_millis_f32(), 2345.678);
+    /// ```
+    #[unstable(feature = "duration_millis_float", issue = "122451")]
+    #[must_use]
+    #[inline]
+    #[rustc_const_unstable(feature = "duration_consts_float", issue = "72440")]
+    pub const fn as_millis_f32(&self) -> f32 {
+        (self.secs as f32) * (MILLIS_PER_SEC as f32)
+            + (self.nanos.0 as f32) / (NANOS_PER_MILLI as f32)
+    }
+
     /// Creates a new `Duration` from the specified number of seconds represented
     /// as `f64`.
     ///