use std::time::{SystemTime, UNIX_EPOCH};
pub fn time_since_epoch_ms() -> u64 {
SystemTime::now()
.duration_since(UNIX_EPOCH)
.expect("System time before Unix epoch")
.as_millis() as u64
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_time_since_epoch_ms() {
let time1 = time_since_epoch_ms();
assert!(time1 > 1577836800000);
std::thread::sleep(std::time::Duration::from_millis(10));
let time2 = time_since_epoch_ms();
assert!(time2 >= time1);
assert!(time2 - time1 < 1000); }
#[test]
fn test_time_monotonically_increasing() {
let mut times = Vec::new();
for _ in 0..10 {
times.push(time_since_epoch_ms());
std::thread::sleep(std::time::Duration::from_millis(1));
}
for i in 1..times.len() {
assert!(times[i] >= times[i-1]);
}
}
}