commit 4259d5cbd1ce07bb4043e792d982cb9a28831811
parent 3ca35ba0aebecd4d4e9bf40e958eb13c5d64c7b1
Author: triesap <triesap@radroots.dev>
Date: Mon, 19 Jan 2026 06:51:46 +0000
app-utils: add time helpers
- add time_now_s helper for epoch seconds
- add time_now_ms helper matching legacy behavior
- export time helpers from utils crate
- add unit test with timing tolerance
Diffstat:
2 files changed, 33 insertions(+), 0 deletions(-)
diff --git a/crates/utils/src/lib.rs b/crates/utils/src/lib.rs
@@ -3,8 +3,10 @@
pub mod error;
pub mod errors;
pub mod text;
+pub mod time;
pub mod types;
pub use errors::{err_msg, handle_err, throw_err, ERR_PREFIX_APP, ERR_PREFIX_UTILS};
pub use text::{str_cap, str_cap_words, text_dec, text_enc, ROOT_SYMBOL};
+pub use time::{time_now_ms, time_now_s};
pub use types::{resolve_err, resolve_ok, ResolveError, ResultPass};
diff --git a/crates/utils/src/time/mod.rs b/crates/utils/src/time/mod.rs
@@ -0,0 +1,31 @@
+#![forbid(unsafe_code)]
+
+use std::time::{SystemTime, UNIX_EPOCH};
+
+pub fn time_now_s() -> u64 {
+ SystemTime::now()
+ .duration_since(UNIX_EPOCH)
+ .map(|duration| duration.as_secs())
+ .unwrap_or(0)
+}
+
+pub fn time_now_ms() -> u64 {
+ time_now_s()
+}
+
+#[cfg(test)]
+mod tests {
+ use super::{time_now_ms, time_now_s};
+
+ #[test]
+ fn time_now_returns_seconds() {
+ let now_s = time_now_s();
+ let now_ms = time_now_ms();
+ let delta = if now_s > now_ms {
+ now_s - now_ms
+ } else {
+ now_ms - now_s
+ };
+ assert!(delta <= 1);
+ }
+}