Skip to main content

yoctui_utils/
time.rs

1use std::time::{Duration, SystemTime};
2
3pub fn format_duration(duration: Duration) -> String {
4    format!(
5        "{:02}:{:02}:{:02}",
6        duration.as_secs() / 3600,
7        duration.as_secs() / 60 % 60,
8        duration.as_secs() % 60
9    )
10}
11
12/// Current Unix milliseconds, saturating for out-of-range system clocks.
13pub fn unix_ms() -> u64 {
14    SystemTime::UNIX_EPOCH
15        .elapsed()
16        .unwrap_or_default()
17        .as_millis()
18        .try_into()
19        .unwrap_or(u64::MAX)
20}
21
22/// A positive bounded poll timeout; callers handle nonblocking zero separately.
23pub fn poll_timeout_ms(timeout: Duration) -> i32 {
24    timeout.as_millis().clamp(1, i32::MAX as u128) as i32
25}
26
27#[cfg(test)]
28#[path = "tests/time/mod.rs"]
29mod tests;