crankit_time/
lib.rs

1#![no_std]
2
3//! An ergonomic time API for the playdate
4//!
5//! The traits [`ElapsedTime`] and [`AbsoluteTime`] describe the available API.
6//!
7//! ## Feature flags
8//!
9//! * `playdate-sys-v02` (default): provides implementations of the traits for the type `ffi::playdate_sys` and `ffi::PlaydateAPI` of the crate [`playdate-sys`](https://docs.rs/playdate-sys/0.2) (version `0.2`)
10
11mod interop {
12    #[cfg(feature = "playdate-sys-v02")]
13    mod playdate_sys_v02;
14}
15
16use core::time::Duration;
17
18/// System capable of tracking elapsed time since last reset
19pub trait ElapsedTime {
20    /// Returns the duration since last [`Self::reset_elapsed_time`] was called.
21    fn elapsed_time(&self) -> Duration;
22
23    /// Resets the timer and return the elapsed time since last reset.
24    fn reset_elapsed_time(&self) -> Duration;
25}
26
27/// System capable of returning the absolute current time
28pub trait AbsoluteTime {
29    /// Returns the time elapsed since midnight (hour 0), January 1, 2000.
30    fn elapsed_since_epoch(&self) -> Duration;
31}