sim_time/
config.rs

1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3use serde_with::serde_as;
4
5#[derive(Clone, Debug, Serialize, Deserialize)]
6pub struct TimeConfig {
7    pub(super) realtime: bool,
8    #[serde(default, skip_serializing_if = "Option::is_none")]
9    pub(super) sim_time: Option<SimTimeConfig>,
10}
11
12impl Default for TimeConfig {
13    fn default() -> Self {
14        Self {
15            realtime: true,
16            sim_time: None,
17        }
18    }
19}
20
21#[serde_as]
22#[derive(Clone, Debug, Deserialize, Serialize)]
23pub struct SimTimeConfig {
24    #[serde(default = "Utc::now")]
25    pub(super) start_at: DateTime<Utc>,
26    pub(super) tick_interval_ms: u64,
27    #[serde_as(as = "serde_with::DurationSeconds<u64>")]
28    pub(super) tick_duration_secs: std::time::Duration,
29    #[serde(default)]
30    pub(super) transform_to_realtime: bool,
31}