Rollup merge of #124667 - newpavlov:stabilize_div_duration, r=jhpratt · model-checking/verify-rust-std@bf3ca98
@@ -1084,40 +1084,42 @@ impl Duration {
10841084 ///
10851085 /// # Examples
10861086 /// ```
1087- /// #![feature(div_duration)]
10881087 /// use std::time::Duration;
10891088 ///
10901089 /// let dur1 = Duration::new(2, 700_000_000);
10911090 /// let dur2 = Duration::new(5, 400_000_000);
10921091 /// assert_eq!(dur1.div_duration_f64(dur2), 0.5);
10931092 /// ```
1094- #[unstable(feature = "div_duration", issue = "63139")]
1093+ #[stable(feature = "div_duration", since = "CURRENT_RUSTC_VERSION")]
10951094#[must_use = "this returns the result of the operation, \
10961095 without modifying the original"]
10971096#[inline]
10981097#[rustc_const_unstable(feature = "duration_consts_float", issue = "72440")]
10991098pub const fn div_duration_f64(self, rhs: Duration) -> f64 {
1100-self.as_secs_f64() / rhs.as_secs_f64()
1099+let self_nanos = (self.secs as f64) * (NANOS_PER_SEC as f64) + (self.nanos.0 as f64);
1100+let rhs_nanos = (rhs.secs as f64) * (NANOS_PER_SEC as f64) + (rhs.nanos.0 as f64);
1101+ self_nanos / rhs_nanos
11011102}
1102110311031104/// Divide `Duration` by `Duration` and return `f32`.
11041105 ///
11051106 /// # Examples
11061107 /// ```
1107- /// #![feature(div_duration)]
11081108 /// use std::time::Duration;
11091109 ///
11101110 /// let dur1 = Duration::new(2, 700_000_000);
11111111 /// let dur2 = Duration::new(5, 400_000_000);
11121112 /// assert_eq!(dur1.div_duration_f32(dur2), 0.5);
11131113 /// ```
1114- #[unstable(feature = "div_duration", issue = "63139")]
1114+ #[stable(feature = "div_duration", since = "CURRENT_RUSTC_VERSION")]
11151115#[must_use = "this returns the result of the operation, \
11161116 without modifying the original"]
11171117#[inline]
11181118#[rustc_const_unstable(feature = "duration_consts_float", issue = "72440")]
11191119pub const fn div_duration_f32(self, rhs: Duration) -> f32 {
1120-self.as_secs_f32() / rhs.as_secs_f32()
1120+let self_nanos = (self.secs as f32) * (NANOS_PER_SEC as f32) + (self.nanos.0 as f32);
1121+let rhs_nanos = (rhs.secs as f32) * (NANOS_PER_SEC as f32) + (rhs.nanos.0 as f32);
1122+ self_nanos / rhs_nanos
11211123}
11221124}
11231125