use ? operator instead of match

This commit is contained in:
Sebastian Geisler 2018-11-15 22:56:07 -08:00
parent 86ef38b3b7
commit f2106d0746
2 changed files with 6 additions and 20 deletions

View File

@ -46,25 +46,18 @@ fn add_duration(&self, other: &Duration) -> Timespec {
}
fn checked_add_duration(&self, other: &Duration) -> Option<Timespec> {
let mut secs = match other
let mut secs = other
.as_secs()
.try_into() // <- target type would be `i64`
.ok()
.and_then(|secs| self.t.tv_sec.checked_add(secs))
{
Some(ts) => ts,
None => return None,
};
.and_then(|secs| self.t.tv_sec.checked_add(secs))?;
// Nano calculations can't overflow because nanos are <1B which fit
// in a u32.
let mut nsec = other.subsec_nanos() + self.t.tv_nsec as u32;
if nsec >= NSEC_PER_SEC as u32 {
nsec -= NSEC_PER_SEC as u32;
secs = match secs.checked_add(1) {
Some(ts) => ts,
None => return None,
}
secs = secs.checked_add(1)?;
}
Some(Timespec {
t: syscall::TimeSpec {

View File

@ -47,25 +47,18 @@ fn add_duration(&self, other: &Duration) -> Timespec {
}
fn checked_add_duration(&self, other: &Duration) -> Option<Timespec> {
let mut secs = match other
let mut secs = other
.as_secs()
.try_into() // <- target type would be `libc::time_t`
.ok()
.and_then(|secs| self.t.tv_sec.checked_add(secs))
{
Some(ts) => ts,
None => return None,
};
.and_then(|secs| self.t.tv_sec.checked_add(secs))?;
// Nano calculations can't overflow because nanos are <1B which fit
// in a u32.
let mut nsec = other.subsec_nanos() + self.t.tv_nsec as u32;
if nsec >= NSEC_PER_SEC as u32 {
nsec -= NSEC_PER_SEC as u32;
secs = match secs.checked_add(1) {
Some(ts) => ts,
None => return None,
}
secs = secs.checked_add(1)?;
}
Some(Timespec {
t: libc::timespec {