use std::time::{SystemTime, UNIX_EPOCH};
#[inline]
pub fn epoch_millis() -> u64 {
SystemTime::now()
.duration_since(UNIX_EPOCH)
.map(|d| d.as_millis() as u64)
.unwrap_or(0)
}
#[inline]
pub fn epoch_millis_for_ordering() -> u64 {
epoch_millis()
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_epoch_millis_returns_nonzero() {
let ts = epoch_millis();
assert!(ts > 0);
}
#[test]
fn test_epoch_millis_for_ordering_same_as_epoch_millis() {
let ts1 = epoch_millis();
let ts2 = epoch_millis_for_ordering();
assert!((ts1 as i64 - ts2 as i64).abs() < 100);
}
#[test]
fn test_epoch_millis_monotonic_in_short_term() {
let ts1 = epoch_millis();
let ts2 = epoch_millis();
assert!(ts2 >= ts1);
}
}