#![no_std]
#![deny(missing_docs)]
#![allow(async_fn_in_trait)]
pub mod half_period_counter;
mod linked_list;
pub mod monotonic;
pub mod timer_queue;
pub struct TimeoutError;
pub use embedded_hal;
pub use embedded_hal_async;
pub trait Monotonic {
type Instant: Ord
+ Copy
+ core::ops::Add<Self::Duration, Output = Self::Instant>
+ core::ops::Sub<Self::Duration, Output = Self::Instant>
+ core::ops::Sub<Self::Instant, Output = Self::Duration>;
type Duration: Copy;
fn now() -> Self::Instant;
async fn delay(duration: Self::Duration);
async fn delay_until(instant: Self::Instant);
async fn timeout_at<F: core::future::Future>(
instant: Self::Instant,
future: F,
) -> Result<F::Output, TimeoutError>;
async fn timeout_after<F: core::future::Future>(
duration: Self::Duration,
future: F,
) -> Result<F::Output, TimeoutError>;
}