//! Time provider abstraction.
//!//! Most production code can call `Clock::now()` directly. Tests can swap in
//! a frozen or stepping clock to make time-sensitive assertions deterministic.
usechrono::{DateTime, Utc};usestd::sync::Arc;pubtraitClock: Send + Sync + 'static {fnnow(&self)->DateTime<Utc>;}#[derive(Debug, Default, Clone, Copy)]pubstructSystemClock;implClock forSystemClock{fnnow(&self)->DateTime<Utc>{Utc::now()}}pubtypeSharedClock=Arc<dyn Clock>;pubfnsystem_clock()-> SharedClock{Arc::new(SystemClock)}