pub struct Duration { /* private fields */ }
Expand description
Duration represents a span of time.
Negative durations are not supported. Duration
is not meant to be used
for math operations.
Implementations§
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));
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: Duration) -> Duration
pub fn abs_diff(self, rhs: Duration) -> 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));
Trait Implementations§
Source§impl Add<Duration> for Instant
impl Add<Duration> for Instant
Source§fn add(self, rhs: Duration) -> <Instant as Add<Duration>>::Output
fn add(self, rhs: Duration) -> <Instant as Add<Duration>>::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: Duration) -> <Duration as Add>::Output
fn add(self, rhs: Duration) -> <Duration as Add>::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<Duration, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<Duration, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl Div<u32> for Duration
impl Div<u32> for Duration
Source§fn div(self, rhs: u32) -> <Duration as Div<u32>>::Output
fn div(self, rhs: u32) -> <Duration as Div<u32>>::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<u32> for Duration
impl Mul<u32> for Duration
Source§fn mul(self, rhs: u32) -> <Duration as Mul<u32>>::Output
fn mul(self, rhs: u32) -> <Duration as Mul<u32>>::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 Serialize for Duration
impl Serialize for Duration
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Source§impl Sub<Duration> for Instant
impl Sub<Duration> for Instant
Source§fn sub(self, rhs: Duration) -> <Instant as Sub<Duration>>::Output
fn sub(self, rhs: Duration) -> <Instant as Sub<Duration>>::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: Duration) -> <Duration as Sub>::Output
fn sub(self, rhs: Duration) -> <Duration as Sub>::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);
Source§impl TryFrom<Duration> for Duration
impl TryFrom<Duration> for Duration
Source§fn try_from(
value: Duration,
) -> Result<Duration, <Duration as TryFrom<Duration>>::Error>
fn try_from( value: Duration, ) -> Result<Duration, <Duration as TryFrom<Duration>>::Error>
§Examples
use veecle_osal_api::time::Duration;
assert_eq!(Duration::try_from(core::time::Duration::from_secs(1)), Ok(Duration::from_secs(1)));