Replace Duration::new() w/ Duration::from_nanos (#9387)

This commit is contained in:
Niklas Adolfsson 2018-08-21 17:01:09 +02:00 committed by Andrew Jones
parent 7bf1889af1
commit e12a26dac5

View File

@ -120,17 +120,15 @@ impl LoadDistribution {
pub fn expected_time(&self, kind: Kind) -> Duration { pub fn expected_time(&self, kind: Kind) -> Duration {
let samples = self.samples.read(); let samples = self.samples.read();
samples.get(&kind).and_then(|s| { samples.get(&kind).and_then(|s| {
if s.len() == 0 { return None } if s.is_empty() { return None }
let alpha: f64 = 1f64 / s.len() as f64; let alpha: f64 = 1_f64 / s.len() as f64;
let start = s.front().expect("length known to be non-zero; qed").clone(); let start = *s.front().expect("length known to be non-zero; qed") as f64;
let ema = s.iter().skip(1).fold(start as f64, |a, &c| { let ema = s.iter().skip(1).fold(start, |a, &c| {
(alpha * c as f64) + ((1.0 - alpha) * a) (alpha * c as f64) + ((1.0 - alpha) * a)
}); });
// TODO: use `Duration::from_nanos` once stable (https://github.com/rust-lang/rust/issues/46507) Some(Duration::from_nanos(ema as u64))
let ema = ema as u64;
Some(Duration::new(ema / 1_000_000_000, (ema % 1_000_000_000) as u32))
}).unwrap_or_else(move || hardcoded_serve_time(kind)) }).unwrap_or_else(move || hardcoded_serve_time(kind))
} }