#[derive(Default, Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[derive(Deserialize, Serialize)]
#[repr(transparent)]
pub struct ClockTicks(u64);
impl From<u64> for ClockTicks
{
#[inline(always)]
fn from(value: u64) -> Self
{
Self(value)
}
}
impl From<clock_t> for ClockTicks
{
#[inline(always)]
fn from(value: clock_t) -> Self
{
Self(value as u64)
}
}
impl Into<u64> for ClockTicks
{
#[inline(always)]
fn into(self) -> u64
{
self.0
}
}
impl Into<clock_t> for ClockTicks
{
#[inline(always)]
fn into(self) -> clock_t
{
self.0 as clock_t
}
}
impl ParseNumber for ClockTicks
{
#[inline(always)]
fn parse_number(bytes: &[u8], radix: Radix, parse_byte: impl Fn(Radix, u8) -> Result<u8, ParseNumberError>) -> Result<Self, ParseNumberError>
{
Ok(Self(u64::parse_number(bytes, radix, parse_byte)?))
}
}
impl ClockTicks
{
#[inline(always)]
pub const fn new(clock_ticks: u64) -> Self
{
Self(clock_ticks)
}
#[inline(always)]
pub const fn to_seconds(self) -> u64
{
self.0 / Self::clock_ticks_per_second()
}
#[inline(always)]
const fn clock_ticks_per_second() -> u64
{
100
}
}