@@ -263,18 +263,52 @@ impl Duration {
263263 #[ inline]
264264 pub fn subsec_nanos ( & self ) -> u32 { self . nanos }
265265
266+ /// Returns the total number of milliseconds contained by this `Duration`.
267+ ///
268+ /// # Examples
269+ ///
270+ /// ```
271+ /// # #![feature(duration_as_u128)]
272+ /// use std::time::Duration;
273+ ///
274+ /// let duration = Duration::new(5, 730023852);
275+ /// assert_eq!(duration.as_millis(), 5730);
276+ /// ```
277+ #[ unstable( feature = "duration_as_u128" , issue = "50202" ) ]
278+ #[ inline]
279+ pub fn as_millis ( & self ) -> u128 {
280+ self . secs as u128 * MILLIS_PER_SEC as u128 + self . nanos as u128 / NANOS_PER_MILLI as u128
281+ }
282+
283+ /// Returns the total number of microseconds contained by this `Duration`.
284+ ///
285+ /// # Examples
286+ ///
287+ /// ```
288+ /// # #![feature(duration_as_u128)]
289+ /// use std::time::Duration;
290+ ///
291+ /// let duration = Duration::new(5, 730023852);
292+ /// assert_eq!(duration.as_micros(), 5730023);
293+ /// ```
294+ #[ unstable( feature = "duration_as_u128" , issue = "50202" ) ]
295+ #[ inline]
296+ pub fn as_micros ( & self ) -> u128 {
297+ self . secs as u128 * MICROS_PER_SEC as u128 + self . nanos as u128 / NANOS_PER_MICRO as u128
298+ }
299+
266300 /// Returns the total number of nanoseconds contained by this `Duration`.
267301 ///
268302 /// # Examples
269303 ///
270304 /// ```
271- /// # #![feature(duration_nanos )]
305+ /// # #![feature(duration_as_u128 )]
272306 /// use std::time::Duration;
273307 ///
274308 /// let duration = Duration::new(5, 730023852);
275309 /// assert_eq!(duration.as_nanos(), 5730023852);
276310 /// ```
277- #[ unstable( feature = "duration_nanos " , issue = "50202" ) ]
311+ #[ unstable( feature = "duration_as_u128 " , issue = "50202" ) ]
278312 #[ inline]
279313 pub fn as_nanos ( & self ) -> u128 {
280314 self . secs as u128 * NANOS_PER_SEC as u128 + self . nanos as u128
0 commit comments