From 03b66ead69b311dbe391c242b0a5924b0d8dac0f Mon Sep 17 00:00:00 2001 From: Clar Charr Date: Fri, 30 Dec 2016 14:22:47 -0500 Subject: [PATCH] Sum for Duration. --- src/libstd/time/duration.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/libstd/time/duration.rs b/src/libstd/time/duration.rs index 162ce530f17cd..2c4e2bbff93a1 100644 --- a/src/libstd/time/duration.rs +++ b/src/libstd/time/duration.rs @@ -8,6 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. +use iter::Sum; use ops::{Add, Sub, Mul, Div, AddAssign, SubAssign, MulAssign, DivAssign}; const NANOS_PER_SEC: u32 = 1_000_000_000; @@ -356,6 +357,20 @@ impl DivAssign for Duration { } } +#[stable(feature = "duration_sum", since = "1.16.0")] +impl Sum for Duration { + fn sum>(iter: I) -> Duration { + iter.fold(Duration::new(0, 0), |a, b| a + b) + } +} + +#[stable(feature = "duration_sum", since = "1.16.0")] +impl<'a> Sum<&'a Duration> for Duration { + fn sum>(iter: I) -> Duration { + iter.fold(Duration::new(0, 0), |a, b| a + *b) + } +} + #[cfg(test)] mod tests { use super::Duration;