lsl_core/clock.rs
1//! High-resolution local clock, matching liblsl's lsl_local_clock().
2//!
3//! Uses std::time::Instant as a monotonic clock source with nanosecond precision.
4
5use once_cell::sync::Lazy;
6use std::time::Instant;
7
8static EPOCH: Lazy<Instant> = Lazy::new(Instant::now);
9
10/// Return the current local clock time in seconds (monotonic, high-resolution).
11/// Equivalent to liblsl's lsl_local_clock().
12pub fn local_clock() -> f64 {
13 let elapsed = EPOCH.elapsed();
14 elapsed.as_secs() as f64 + elapsed.subsec_nanos() as f64 / 1_000_000_000.0
15}