use core::time::Duration;
pub fn ticks_to_duration(ticks: u64, freq: u32) -> Duration {
let nanoseconds = u128::from(ticks) * 1_000_000_000 / u128::from(freq);
let seconds = (nanoseconds / 1_000_000_000).try_into().unwrap();
let subsecond_nanoseconds = (nanoseconds % 1_000_000_000) as u32;
Duration::new(seconds, subsecond_nanoseconds)
}
pub fn duration_to_ticks(duration: Duration, freq: u32) -> u64 {
let nanos = duration.as_nanos();
u64::try_from(nanos.saturating_mul(u128::from(freq)) / 1_000_000_000).unwrap_or(u64::MAX)
}