From 877139495d4c572493f2440cff038283a3ba4e5e Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Thu, 13 Nov 2014 08:48:38 -0800 Subject: std: Fix the return value of Duration::span The subtraction was erroneously backwards, returning negative durations! Closes #18925 --- src/libstd/time/duration.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'src/libstd') diff --git a/src/libstd/time/duration.rs b/src/libstd/time/duration.rs index c2d4afeb9ad..8892884045a 100644 --- a/src/libstd/time/duration.rs +++ b/src/libstd/time/duration.rs @@ -140,7 +140,7 @@ impl Duration { pub fn span(f: ||) -> Duration { let before = super::precise_time_ns(); f(); - Duration::nanoseconds((before - super::precise_time_ns()) as i64) + Duration::nanoseconds((super::precise_time_ns() - before) as i64) } /// Returns the total number of whole weeks in the duration. @@ -565,4 +565,11 @@ mod tests { assert_eq!(format!("{:30}", Duration::days(1) + Duration::milliseconds(2345)), "P1DT2.345S".to_string()); } + + #[test] + fn span() { + use io::timer::sleep; + let dur = Duration::span(|| sleep(Duration::milliseconds(5))); + assert!(dur > Duration::milliseconds(1)); + } } -- cgit 1.4.1-3-g733a5