pub struct Duration {
micros: u64,
}Expand description
Duration represents a span of time.
Negative durations are not supported. Duration is not meant to be used
for math operations.
Fields§
§micros: u64Implementations§
Source§impl Duration
impl Duration
Sourcepub const MAX: Duration
pub const MAX: Duration
The largest value that can be represented by the Duration type.
§Examples
use veecle_osal_api::time::Duration;
assert_eq!(Duration::MAX, Duration::from_micros(u64::MAX));Sourcepub const ZERO: Duration
pub const ZERO: Duration
A duration of zero time.
§Examples
use veecle_osal_api::time::Duration;
assert_eq!(Duration::ZERO, Duration::from_micros(0));Sourceconst MICROS_PER_SECOND: u64 = 1_000_000u64
const MICROS_PER_SECOND: u64 = 1_000_000u64
Factor of microseconds per second.
Sourceconst MILLIS_PER_SECOND: u64 = 1_000u64
const MILLIS_PER_SECOND: u64 = 1_000u64
Factor of milliseconds per second.
Sourcepub const fn from_secs(secs: u64) -> Duration
pub const fn from_secs(secs: u64) -> Duration
Creates a duration from the specified number of seconds.
§Examples
use veecle_osal_api::time::Duration;
assert_eq!(Duration::from_secs(1), Duration::from_millis(1000));Sourcepub const fn from_millis(millis: u64) -> Duration
pub const fn from_millis(millis: u64) -> Duration
Creates a duration from the specified number of milliseconds.
§Examples
use veecle_osal_api::time::Duration;
assert_eq!(Duration::from_secs(1), Duration::from_millis(1000));Sourcepub const fn from_micros(micros: u64) -> Duration
pub const fn from_micros(micros: u64) -> Duration
Creates a duration from the specified number of microseconds.
§Examples
use veecle_osal_api::time::Duration;
assert_eq!(Duration::from_secs(1), Duration::from_micros(1000000));Sourcepub const fn as_secs(&self) -> u64
pub const fn as_secs(&self) -> u64
Returns the total amount of seconds, rounded down.
§Examples
use veecle_osal_api::time::Duration;
assert_eq!(Duration::from_millis(1980).as_secs(), 1);Sourcepub const fn as_millis(&self) -> u64
pub const fn as_millis(&self) -> u64
Returns the total amount of milliseconds, rounded down.
§Examples
use veecle_osal_api::time::Duration;
assert_eq!(Duration::from_millis(1980).as_millis(), 1980);Sourcepub const fn as_micros(&self) -> u64
pub const fn as_micros(&self) -> u64
Returns the total amount of microseconds.
§Examples
use veecle_osal_api::time::Duration;
assert_eq!(Duration::from_millis(1980).as_micros(), 1980000);Sourcepub fn checked_add(self, rhs: Duration) -> Option<Duration>
pub fn checked_add(self, rhs: Duration) -> Option<Duration>
Adds one Duration to another, returning a new Duration or None in the event of an overflow.
§Examples
use veecle_osal_api::time::Duration;
assert_eq!(
Duration::from_secs(1).checked_add(Duration::from_secs(1)),
Some(Duration::from_secs(2))
);
assert_eq!(Duration::MAX.checked_add(Duration::from_secs(1)), None);Sourcepub fn checked_sub(self, rhs: Duration) -> Option<Duration>
pub fn checked_sub(self, rhs: Duration) -> Option<Duration>
Subtracts one Duration from another, returning a new Duration or None in the event of an underflow.
§Examples
use veecle_osal_api::time::Duration;
assert_eq!(
Duration::from_secs(2).checked_sub(Duration::from_secs(1)),
Some(Duration::from_secs(1))
);
assert_eq!(Duration::from_secs(1).checked_sub(Duration::from_secs(2)), None);Sourcepub fn checked_mul(self, rhs: u32) -> Option<Duration>
pub fn checked_mul(self, rhs: u32) -> Option<Duration>
Multiplies one Duration by a scalar u32, returning a new Duration or None in the event of an overflow.
§Examples
use veecle_osal_api::time::Duration;
assert_eq!(Duration::from_secs(1).checked_mul(2), Some(Duration::from_secs(2)));
assert_eq!(Duration::MAX.checked_mul(2), None);Sourcepub fn checked_div(self, rhs: u32) -> Option<Duration>
pub fn checked_div(self, rhs: u32) -> Option<Duration>
Divides one Duration by a scalar u32, returning a new Duration or None if rhs == 0.
§Examples
use veecle_osal_api::time::Duration;
assert_eq!(Duration::from_secs(1).checked_div(2), Some(Duration::from_millis(500)));
assert_eq!(Duration::from_secs(1).checked_div(0), None);Sourcepub fn abs_diff(self, rhs: Self) -> Duration
pub fn abs_diff(self, rhs: Self) -> Duration
Returns the absolute difference between self and rhs.
§Examples
use veecle_osal_api::time::Duration;
assert_eq!(Duration::from_secs(1).abs_diff(Duration::from_secs(2)), Duration::from_secs(1));
assert_eq!(Duration::from_secs(2).abs_diff(Duration::from_secs(1)), Duration::from_secs(1));Sourcepub(crate) fn max_no_overflow_alias() -> Self
pub(crate) fn max_no_overflow_alias() -> Self
Returns a duration of approximately 50 years.
No leap-seconds/days have been taken into account.
Can be used in place of MAX to avoid overflows.
Trait Implementations§
Source§impl Add<Duration> for Instant
impl Add<Duration> for Instant
Source§fn add(self, rhs: Duration) -> Self::Output
fn add(self, rhs: Duration) -> Self::Output
§Panics
This function may panic if the resulting instant overflows. See Instant::checked_add for a version
without panic.
§Examples
use veecle_osal_api::time::{Duration, Instant, TimeAbstraction};
use veecle_osal_std::time::Time;
let now = Time::now();
assert!(now + Duration::from_secs(1) > now);use veecle_osal_api::time::{Duration, Instant, TimeAbstraction};
use veecle_osal_std::time::Time;
let now = Time::now();
let _ = now + Duration::MAX;Source§impl Add for Duration
impl Add for Duration
Source§fn add(self, rhs: Self) -> Self::Output
fn add(self, rhs: Self) -> Self::Output
§Panics
This function may panic if the resulting duration overflows. See Duration::checked_add for a version
without panic.
§Examples
use veecle_osal_api::time::Duration;
assert_eq!(Duration::from_secs(1) + Duration::from_secs(1), Duration::from_secs(2));use veecle_osal_api::time::Duration;
let _ = Duration::MAX + Duration::from_secs(1);Source§impl<'de> Deserialize<'de> for Duration
impl<'de> Deserialize<'de> for Duration
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl Div<u32> for Duration
impl Div<u32> for Duration
Source§fn div(self, rhs: u32) -> Self::Output
fn div(self, rhs: u32) -> Self::Output
§Panics
This function may panic if the duration is divided by zero. See Duration::checked_div for a version
without panic.
§Examples
use veecle_osal_api::time::Duration;
assert_eq!(Duration::from_secs(1) / 2, Duration::from_millis(500));use veecle_osal_api::time::Duration;
let _ = Duration::from_secs(1) / 0;Source§impl Mul<Duration> for u32
impl Mul<Duration> for u32
Source§fn mul(self, rhs: Duration) -> Self::Output
fn mul(self, rhs: Duration) -> Self::Output
§Panics
This function may panic if the resulting duration overflows. See Duration::checked_mul for a version
without panic.
§Examples
use veecle_osal_api::time::Duration;
assert_eq!(2 * Duration::from_secs(1), Duration::from_secs(2));use veecle_osal_api::time::Duration;
let _ = 2 * Duration::MAX;Source§impl Mul<u32> for Duration
impl Mul<u32> for Duration
Source§fn mul(self, rhs: u32) -> Self::Output
fn mul(self, rhs: u32) -> Self::Output
§Panics
This function may panic if the resulting duration overflows. See Duration::checked_mul for a version
without panic.
§Examples
use veecle_osal_api::time::Duration;
assert_eq!(Duration::from_secs(1) * 2, Duration::from_secs(2));use veecle_osal_api::time::Duration;
let _ = Duration::MAX * 2;Source§impl Ord for Duration
impl Ord for Duration
Source§impl PartialOrd for Duration
impl PartialOrd for Duration
Source§impl Sub<Duration> for Instant
impl Sub<Duration> for Instant
Source§fn sub(self, rhs: Duration) -> Self::Output
fn sub(self, rhs: Duration) -> Self::Output
§Panics
This function may panic if the resulting instant underflows. See Instant::checked_sub for a
version without panic.
§Examples
use veecle_osal_api::time::{Duration, Instant, TimeAbstraction};
use veecle_osal_std::time::Time;
let begin = Time::now();
std::thread::sleep(core::time::Duration::from_millis(1));
let end = Time::now();
assert!(end - Duration::from_millis(1) < end);use veecle_osal_api::time::{Duration, Instant, TimeAbstraction};
use veecle_osal_std::time::Time;
let now = Time::now();
let _ = now - Duration::MAX;Source§impl Sub for Duration
impl Sub for Duration
Source§fn sub(self, rhs: Self) -> Self::Output
fn sub(self, rhs: Self) -> Self::Output
§Panics
This function may panic if the resulting duration underflows. See Duration::checked_sub for a
version without panic.
§Examples
use veecle_osal_api::time::Duration;
assert_eq!(Duration::from_secs(2) - Duration::from_secs(1), Duration::from_secs(1));use veecle_osal_api::time::Duration;
let _ = Duration::from_secs(1) - Duration::from_secs(2);