diff options
| author | Clar Charr <clar@charr.xyz> | 2016-12-30 14:22:47 -0500 |
|---|---|---|
| committer | Clar Charr <clar@charr.xyz> | 2016-12-30 14:22:47 -0500 |
| commit | 03b66ead69b311dbe391c242b0a5924b0d8dac0f (patch) | |
| tree | ed6760da12515e662627924f430c5e7a1e826b46 /src/libstd/time | |
| parent | 7f2d2afa9196ba6314a29e58d5324dbd9923c75e (diff) | |
| download | rust-03b66ead69b311dbe391c242b0a5924b0d8dac0f.tar.gz rust-03b66ead69b311dbe391c242b0a5924b0d8dac0f.zip | |
Sum for Duration.
Diffstat (limited to 'src/libstd/time')
| -rw-r--r-- | src/libstd/time/duration.rs | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/libstd/time/duration.rs b/src/libstd/time/duration.rs index 162ce530f17..2c4e2bbff93 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<u32> for Duration { } } +#[stable(feature = "duration_sum", since = "1.16.0")] +impl Sum for Duration { + fn sum<I: Iterator<Item=Duration>>(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<I: Iterator<Item=&'a Duration>>(iter: I) -> Duration { + iter.fold(Duration::new(0, 0), |a, b| a + *b) + } +} + #[cfg(test)] mod tests { use super::Duration; |
