[−][src]Module embedded_time::duration::time_units
Implementations of the Duration
trait.
Constructing a duration
assert_eq!(Milliseconds::<i32>::new(23), Milliseconds(23_i32)); assert_eq!(Milliseconds(23), 23.milliseconds());
Get the integer count
assert_eq!(Milliseconds(23).count(), 23);
Formatting
Just forwards the underlying integer to core::fmt::Display::fmt()
assert_eq!(format!("{}", Seconds(123)), "123");
Add/Sub
Panics
Panics if the rhs duration cannot be converted into the lhs duration type
In this example, the maximum i32
value of seconds is stored as i32
and
converting that value to milliseconds (with i32
storage type) causes an overflow.
let _ = Milliseconds(24) + Seconds(i32::MAX);
This example works just fine as the seconds value is first cast to i64
, then
converted to milliseconds.
let _ = Milliseconds(24_i64) + Seconds(i32::MAX);
Here, there is no units conversion to worry about, but i32::MAX + 1
cannot be
cast to an i32
.
let _ = Seconds(i32::MAX) - Seconds(i32::MAX as i64 + 1);
Examples
assert_eq!((Milliseconds(3_234) - Seconds(2)), Milliseconds(1_234)); assert_eq!((Milliseconds(3_234_i64) - Seconds(2_i32)), Milliseconds(1_234_i64)); assert_eq!((Seconds(i32::MAX) - Milliseconds((i32::MAX as i64) + 1)), Seconds(2_145_336_164_i32));
Equality
assert_eq!(Seconds(123), Seconds(123)); assert_eq!(Seconds(123), Milliseconds(123_000)); assert_ne!(Seconds(123), Milliseconds(123_001)); assert_ne!(Milliseconds(123_001), Seconds(123)); assert_ne!(Milliseconds(123_001_i64), Seconds(123_i64)); assert_ne!(Seconds(123_i64), Milliseconds(123_001_i64)); assert_ne!(Seconds(123_i64), Milliseconds(123_001_i32));
Comparisons
assert!(Seconds(2) < Seconds(3)); assert!(Seconds(2) < Milliseconds(2_001)); assert!(Seconds(2) == Milliseconds(2_000)); assert!(Seconds(2) > Milliseconds(1_999)); assert!(Seconds(2_i32) < Milliseconds(2_001_i64)); assert!(Seconds(2_i64) < Milliseconds(2_001_i32));
Implementations of the Duration
trait.
Constructing a duration
assert_eq!(Milliseconds::<i32>::new(23), Milliseconds(23_i32)); assert_eq!(Milliseconds(23), 23.milliseconds());
Get the integer count
assert_eq!(Milliseconds(23).count(), 23);
Formatting
Just forwards the underlying integer to core::fmt::Display::fmt()
assert_eq!(format!("{}", Seconds(123)), "123");
Add/Sub
Panics
Panics if the rhs duration cannot be converted into the lhs duration type
In this example, the maximum i32
value of seconds is stored as i32
and
converting that value to milliseconds (with i32
storage type) causes an overflow.
let _ = Milliseconds(24) + Seconds(i32::MAX);
This example works just fine as the seconds value is first cast to i64
, then
converted to milliseconds.
let _ = Milliseconds(24_i64) + Seconds(i32::MAX);
Here, there is no units conversion to worry about, but i32::MAX + 1
cannot be
cast to an i32
.
let _ = Seconds(i32::MAX) + Seconds(i32::MAX as i64 + 1);
Examples
assert_eq!((Milliseconds(3_234) - Seconds(2)), Milliseconds(1_234)); assert_eq!((Milliseconds(3_234_i64) - Seconds(2_i32)), Milliseconds(1_234_i64));
Equality
assert_eq!(Seconds(123), Seconds(123)); assert_eq!(Seconds(123), Milliseconds(123_000)); assert_ne!(Seconds(123), Milliseconds(123_001)); assert_ne!(Milliseconds(123_001), Seconds(123)); assert_ne!(Milliseconds(123_001_i64), Seconds(123_i64)); assert_ne!(Seconds(123_i64), Milliseconds(123_001_i64)); assert_ne!(Seconds(123_i64), Milliseconds(123_001_i32));
Comparisons
assert!(Seconds(2) < Seconds(3)); assert!(Seconds(2) < Milliseconds(2_001)); assert!(Seconds(2) == Milliseconds(2_000)); assert!(Seconds(2) > Milliseconds(1_999)); assert!(Seconds(2_i32) < Milliseconds(2_001_i64)); assert!(Seconds(2_i64) < Milliseconds(2_001_i32));
Structs
Hours | See module-level documentation for details about this type |
Microseconds | See module-level documentation for details about this type |
Milliseconds | See module-level documentation for details about this type |
Minutes | See module-level documentation for details about this type |
Nanoseconds | See module-level documentation for details about this type |
Seconds | See module-level documentation for details about this type |