about summary refs log tree commit diff
path: root/src/libstd/time
diff options
context:
space:
mode:
authorJorge Aparicio <japaricious@gmail.com>2014-12-15 17:06:34 -0500
committerJorge Aparicio <japaricious@gmail.com>2014-12-18 15:02:29 -0500
commit5f347d77084d873d213ca1aa29ccfd8fdd27e28a (patch)
tree539f3b050632dcb24b5d3dc683689f8289133246 /src/libstd/time
parent340f042e03f6c50f229a8e21a93af22485d725f2 (diff)
downloadrust-5f347d77084d873d213ca1aa29ccfd8fdd27e28a.tar.gz
rust-5f347d77084d873d213ca1aa29ccfd8fdd27e28a.zip
libstd: convert `Duration` unops to by value
Diffstat (limited to 'src/libstd/time')
-rw-r--r--src/libstd/time/duration.rs14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/libstd/time/duration.rs b/src/libstd/time/duration.rs
index 8c4a5a6b8c7..85ed27853c4 100644
--- a/src/libstd/time/duration.rs
+++ b/src/libstd/time/duration.rs
@@ -265,6 +265,8 @@ impl Duration {
     }
 }
 
+// NOTE(stage0): Remove impl after a snapshot
+#[cfg(stage0)]
 impl Neg<Duration> for Duration {
     #[inline]
     fn neg(&self) -> Duration {
@@ -276,6 +278,18 @@ impl Neg<Duration> for Duration {
     }
 }
 
+#[cfg(not(stage0))]  // NOTE(stage0): Remove cfg after a snapshot
+impl Neg<Duration> for Duration {
+    #[inline]
+    fn neg(self) -> Duration {
+        if self.nanos == 0 {
+            Duration { secs: -self.secs, nanos: 0 }
+        } else {
+            Duration { secs: -self.secs - 1, nanos: NANOS_PER_SEC - self.nanos }
+        }
+    }
+}
+
 // NOTE(stage0): Remove impl after a snapshot
 #[cfg(stage0)]
 impl Add<Duration,Duration> for Duration {