Skip to content

Commit

Permalink
Rollup merge of rust-lang#89944 - mbartlett21:patch-2, r=Mark-Simulacrum
Browse files Browse the repository at this point in the history
Change `Duration::[try_]from_secs_{f32, f64}` underflow error

The error message now says that it was a negative value.

Fixes rust-lang#89913.
  • Loading branch information
JohnTitor committed Oct 22, 2021
2 parents 8c210e0 + fe060bf commit 5256761
Showing 1 changed file with 7 additions and 9 deletions.
16 changes: 7 additions & 9 deletions library/core/src/time.rs
Original file line number Diff line number Diff line change
Expand Up @@ -756,7 +756,7 @@ impl Duration {
} else if nanos >= MAX_NANOS_F64 {
Err(FromSecsError { kind: FromSecsErrorKind::Overflow })
} else if nanos < 0.0 {
Err(FromSecsError { kind: FromSecsErrorKind::Underflow })
Err(FromSecsError { kind: FromSecsErrorKind::Negative })
} else {
let nanos = nanos as u128;
Ok(Duration {
Expand Down Expand Up @@ -818,7 +818,7 @@ impl Duration {
} else if nanos >= MAX_NANOS_F32 {
Err(FromSecsError { kind: FromSecsErrorKind::Overflow })
} else if nanos < 0.0 {
Err(FromSecsError { kind: FromSecsErrorKind::Underflow })
Err(FromSecsError { kind: FromSecsErrorKind::Negative })
} else {
let nanos = nanos as u128;
Ok(Duration {
Expand Down Expand Up @@ -1274,11 +1274,9 @@ pub struct FromSecsError {
impl FromSecsError {
const fn description(&self) -> &'static str {
match self.kind {
FromSecsErrorKind::NonFinite => {
"got non-finite value when converting float to duration"
}
FromSecsErrorKind::NonFinite => "non-finite value when converting float to duration",
FromSecsErrorKind::Overflow => "overflow when converting float to duration",
FromSecsErrorKind::Underflow => "underflow when converting float to duration",
FromSecsErrorKind::Negative => "negative value when converting float to duration",
}
}
}
Expand All @@ -1292,10 +1290,10 @@ impl fmt::Display for FromSecsError {

#[derive(Debug, Clone, PartialEq, Eq)]
enum FromSecsErrorKind {
// Value is not a finite value (either infinity or NaN).
// Value is not a finite value (either + or - infinity or NaN).
NonFinite,
// Value is too large to store in a `Duration`.
Overflow,
// Value is less than `0.0`.
Underflow,
// Value is negative.
Negative,
}

0 comments on commit 5256761

Please sign in to comment.