Skip to content
This repository was archived by the owner on May 28, 2025. It is now read-only.

Commit ef027a1

Browse files
Duration::zero() -> Duration::ZERO
Duration::ZERO composes better with match and various other things, at the cost of an occasional parens, and results in less work for the optimizer, so let's use that instead.
1 parent d72d5f4 commit ef027a1

File tree

3 files changed

+29
-37
lines changed

3 files changed

+29
-37
lines changed

library/core/src/time.rs

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,21 @@ impl Duration {
108108
#[unstable(feature = "duration_constants", issue = "57391")]
109109
pub const NANOSECOND: Duration = Duration::from_nanos(1);
110110

111+
/// A duration of zero time.
112+
///
113+
/// # Examples
114+
///
115+
/// ```
116+
/// #![feature(duration_zero)]
117+
/// use std::time::Duration;
118+
///
119+
/// let duration = Duration::ZERO;
120+
/// assert!(duration.is_zero());
121+
/// assert_eq!(duration.as_nanos(), 0);
122+
/// ```
123+
#[unstable(feature = "duration_zero", issue = "73544")]
124+
pub const ZERO: Duration = Duration::from_nanos(0);
125+
111126
/// The minimum duration.
112127
///
113128
/// # Examples
@@ -166,24 +181,6 @@ impl Duration {
166181
Duration { secs, nanos }
167182
}
168183

169-
/// Creates a new `Duration` that spans no time.
170-
///
171-
/// # Examples
172-
///
173-
/// ```
174-
/// #![feature(duration_zero)]
175-
/// use std::time::Duration;
176-
///
177-
/// let duration = Duration::zero();
178-
/// assert!(duration.is_zero());
179-
/// assert_eq!(duration.as_nanos(), 0);
180-
/// ```
181-
#[unstable(feature = "duration_zero", issue = "73544")]
182-
#[inline]
183-
pub const fn zero() -> Duration {
184-
Duration { secs: 0, nanos: 0 }
185-
}
186-
187184
/// Creates a new `Duration` from the specified number of whole seconds.
188185
///
189186
/// # Examples
@@ -277,7 +274,7 @@ impl Duration {
277274
/// #![feature(duration_zero)]
278275
/// use std::time::Duration;
279276
///
280-
/// assert!(Duration::zero().is_zero());
277+
/// assert!(Duration::ZERO.is_zero());
281278
/// assert!(Duration::new(0, 0).is_zero());
282279
/// assert!(Duration::from_nanos(0).is_zero());
283280
/// assert!(Duration::from_secs(0).is_zero());

library/core/tests/time.rs

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -108,26 +108,24 @@ fn sub() {
108108

109109
#[test]
110110
fn checked_sub() {
111-
let zero = Duration::zero();
112-
assert_eq!(Duration::NANOSECOND.checked_sub(zero), Some(Duration::NANOSECOND));
111+
assert_eq!(Duration::NANOSECOND.checked_sub(Duration::ZERO), Some(Duration::NANOSECOND));
113112
assert_eq!(
114113
Duration::SECOND.checked_sub(Duration::NANOSECOND),
115114
Some(Duration::new(0, 999_999_999))
116115
);
117-
assert_eq!(zero.checked_sub(Duration::NANOSECOND), None);
118-
assert_eq!(zero.checked_sub(Duration::SECOND), None);
116+
assert_eq!(Duration::ZERO.checked_sub(Duration::NANOSECOND), None);
117+
assert_eq!(Duration::ZERO.checked_sub(Duration::SECOND), None);
119118
}
120119

121120
#[test]
122121
fn saturating_sub() {
123-
let zero = Duration::new(0, 0);
124-
assert_eq!(Duration::NANOSECOND.saturating_sub(zero), Duration::NANOSECOND);
122+
assert_eq!(Duration::NANOSECOND.saturating_sub(Duration::ZERO), Duration::NANOSECOND);
125123
assert_eq!(
126124
Duration::SECOND.saturating_sub(Duration::NANOSECOND),
127125
Duration::new(0, 999_999_999)
128126
);
129-
assert_eq!(zero.saturating_sub(Duration::NANOSECOND), Duration::MIN);
130-
assert_eq!(zero.saturating_sub(Duration::SECOND), Duration::MIN);
127+
assert_eq!(Duration::ZERO.saturating_sub(Duration::NANOSECOND), Duration::MIN);
128+
assert_eq!(Duration::ZERO.saturating_sub(Duration::SECOND), Duration::MIN);
131129
}
132130

133131
#[test]
@@ -339,10 +337,7 @@ fn duration_const() {
339337
const SUB_SEC_NANOS: u32 = DURATION.subsec_nanos();
340338
assert_eq!(SUB_SEC_NANOS, 123_456_789);
341339

342-
const ZERO: Duration = Duration::zero();
343-
assert_eq!(ZERO, Duration::new(0, 0));
344-
345-
const IS_ZERO: bool = ZERO.is_zero();
340+
const IS_ZERO: bool = Duration::ZERO.is_zero();
346341
assert!(IS_ZERO);
347342

348343
const SECONDS: u64 = Duration::SECOND.as_secs();
@@ -386,7 +381,7 @@ fn duration_const() {
386381
const CHECKED_ADD: Option<Duration> = MAX.checked_add(Duration::SECOND);
387382
assert_eq!(CHECKED_ADD, None);
388383

389-
const CHECKED_SUB: Option<Duration> = ZERO.checked_sub(Duration::SECOND);
384+
const CHECKED_SUB: Option<Duration> = (Duration::ZERO).checked_sub(Duration::SECOND);
390385
assert_eq!(CHECKED_SUB, None);
391386

392387
const CHECKED_MUL: Option<Duration> = Duration::SECOND.checked_mul(1);
@@ -416,8 +411,8 @@ fn duration_const() {
416411
const SATURATING_ADD: Duration = MAX.saturating_add(Duration::SECOND);
417412
assert_eq!(SATURATING_ADD, MAX);
418413

419-
const SATURATING_SUB: Duration = ZERO.saturating_sub(Duration::SECOND);
420-
assert_eq!(SATURATING_SUB, ZERO);
414+
const SATURATING_SUB: Duration = (Duration::ZERO).saturating_sub(Duration::SECOND);
415+
assert_eq!(SATURATING_SUB, Duration::ZERO);
421416

422417
const SATURATING_MUL: Duration = MAX.saturating_mul(2);
423418
assert_eq!(SATURATING_MUL, MAX);

library/std/src/time/tests.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,22 +75,22 @@ fn instant_checked_duration_since_nopanic() {
7575
let later = now + Duration::SECOND;
7676
assert_eq!(earlier.checked_duration_since(now), None);
7777
assert_eq!(later.checked_duration_since(now), Some(Duration::SECOND));
78-
assert_eq!(now.checked_duration_since(now), Some(Duration::zero()));
78+
assert_eq!(now.checked_duration_since(now), Some(Duration::ZERO));
7979
}
8080

8181
#[test]
8282
fn instant_saturating_duration_since_nopanic() {
8383
let a = Instant::now();
8484
let ret = (a - Duration::SECOND).saturating_duration_since(a);
85-
assert_eq!(ret, Duration::zero());
85+
assert_eq!(ret, Duration::ZERO);
8686
}
8787

8888
#[test]
8989
fn system_time_math() {
9090
let a = SystemTime::now();
9191
let b = SystemTime::now();
9292
match b.duration_since(a) {
93-
Ok(dur) if dur == Duration::zero() => {
93+
Ok(Duration::ZERO) => {
9494
assert_almost_eq!(a, b);
9595
}
9696
Ok(dur) => {

0 commit comments

Comments
 (0)