Extension traits
The time crate contains two extension traits: time::ext::NumericalDuration
and
time::ext::NumericalStdDuration
. These traits exist to make writing code involving durations (both
from the time crate and the standard library) cleaner to read. Rather than writing
Duration::seconds(5)
, it is possible to write 5.seconds()
. It is possible to use floating point
literals such that 1.5.weeks()
is equivalent to 3.days() + 12.hours()
.
NumericalDuration
provides the following methods that return a time::Duration
:
.nanoseconds()
.microseconds()
.milliseconds()
.seconds()
.minutes()
.hours()
.days()
.weeks()
NumericalStdDuration
provides the following methods that return a core::time::Duration
:
.std_nanoseconds()
.std_microseconds()
.std_milliseconds()
.std_seconds()
.std_minutes()
.std_hours()
.std_days()
.std_weeks()
The NumericalDuration
trait is implemented for i64
and f64
, such that both integer and float
literals are able to use the methods. The NumericalStdDuration
trait is implemented for u64
and
f64
for the same reasons, though the latter will perform a runtime check ensuring the value is
non-negative.
While it is possible to use these extension methods on non-literals, such usage is discouraged for ease of reading.