Files
x2/sub/core/src/time.rs
Intege-rs 09e129f890 test
2025-01-14 13:26:12 -05:00

47 lines
1.5 KiB
Rust

#![allow(unused)]
use core::time::Duration;
#[allow(nonstandard_style)]
pub mod __time_units {
pub mod units {
pub(super) type Milli = u64;
pub(super) type Second = u64;
pub(super) type Minute = u64;
pub(super) type Hour = u64;
pub(super) type Day = u64;
pub(super) type Week = u64;
}
pub mod plural {
use super::units::*;
pub const milliseconds : Milli = 1;
pub const seconds : Second = 1_000;
pub const hours : Hour = 60_000;
pub const minutes : Minute = 3_600_000;
pub const days : Day = 86_400_000;
pub const weeks : Week = 604_800_000;
}
pub mod singular {
use super::units::*;
pub const millisecond : Milli = super::plural::milliseconds;
pub const second : Second = super::plural::seconds;
pub const hour : Hour = super::plural::hours;
pub const minute : Minute = super::plural::minutes;
pub const day : Day = super::plural::days;
pub const week : Week = super::plural::weeks;
}
}
pub macro dur($($amount:tt $unit:ident $(,)?$(and)?)+) {
core::time::Duration::from_millis(0u64 $( + ($crate::time::time_unit!( $amount, $unit)) )+ )
}
macro time_unit {
(1, $unit:ident) => { $crate::time::__time_units::singular::$unit },
($number:literal, $unit:ident) => { $number * $crate::time::__time_units::plural::$unit }
}