rill_core/time/mod.rs
1//! # Time and clock abstractions for Rill
2//!
3//! This module provides timing and synchronization primitives for real-time
4//! signal processing. It includes clock sources, tick information, and
5//! utilities for sample-accurate timing.
6//!
7//! ## Key Components
8//!
9//! - [`ClockTick`]: A single tick of the audio clock with timing information
10//! - [`ClockSource`]: Trait for objects that can provide clock ticks
11//! - [`SystemClock`]: Software-based clock using system time
12//! - [`Clock`]: Legacy clock trait (deprecated, use `ClockSource`)
13//!
14//! ## Example
15//!
16//! ```rust
17//! use rill_core::time::{SystemClock, ClockSource};
18//!
19//! let mut clock = SystemClock::with_sample_rate(44100.0);
20//! let tick = clock.next_tick(64);
21//!
22//! println!("Sample position: {}", tick.sample_pos);
23//! println!("Time since last tick: {} seconds", tick.delta_seconds());
24//! ```
25
26mod clock;
27mod error;
28mod source;
29mod tick;
30
31pub use clock::SystemClock;
32pub use error::TimeError;
33pub use source::ClockSource;
34pub use tick::ClockTick;
35
36/// Result type for time operations
37pub type TimeResult<T> = Result<T, TimeError>;
38
39/// Prelude for convenient imports
40pub mod prelude {
41 pub use super::{ClockSource, ClockTick, SystemClock, TimeError, TimeResult};
42}
43
44#[cfg(test)]
45mod tests {
46 use super::*;
47
48 #[test]
49 fn test_module_exports() {
50 let _clock = SystemClock::with_sample_rate(44100.0);
51 let _tick = ClockTick::new(0, 64, 44100.0);
52 }
53}