Seregon/StratoSDK

StratoSDK is a framework with a declarative approach similar to Flutter/React, written and designed entirely for Rust.

Rust/27.3 KB/No license
crates/strato-ui-core/src/time.rs
1#[cfg(test)]
2use chrono::TimeZone;
3use chrono::{DateTime, Utc};
4#[cfg(test)]
5use std::sync::atomic::{AtomicI64, Ordering};
6 
7#[cfg(not(test))]
8pub fn get_current_time() -> DateTime<Utc> {
9 Utc::now()
10}
11 
12thread_local! {
13 #[cfg(test)]
14 static CURRENT_SECS: AtomicI64 = const { AtomicI64::new(0) };
15}
16#[cfg(test)]
17pub fn get_current_time() -> DateTime<Utc> {
18 CURRENT_SECS.with(|current_secs| {
19 Utc.timestamp_opt(current_secs.load(Ordering::SeqCst), 0)
20 .unwrap()
21 })
22}
23#[cfg(test)]
24pub fn test_offset_time(offset_secs: i64) {
25 CURRENT_SECS.with(|current_secs| {
26 current_secs.fetch_add(offset_secs, Ordering::SeqCst);
27 })
28}
29