about summary refs log tree commit diff
path: root/src/libstd/time
diff options
context:
space:
mode:
authorClar Charr <clar@charr.xyz>2016-12-30 14:22:47 -0500
committerClar Charr <clar@charr.xyz>2016-12-30 14:22:47 -0500
commit03b66ead69b311dbe391c242b0a5924b0d8dac0f (patch)
treeed6760da12515e662627924f430c5e7a1e826b46 /src/libstd/time
parent7f2d2afa9196ba6314a29e58d5324dbd9923c75e (diff)
downloadrust-03b66ead69b311dbe391c242b0a5924b0d8dac0f.tar.gz
rust-03b66ead69b311dbe391c242b0a5924b0d8dac0f.zip
Sum for Duration.
Diffstat (limited to 'src/libstd/time')
-rw-r--r--src/libstd/time/duration.rs15
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;