use crate::{
duration::Duration, instant::Instant, period::Period, time_int::TimeInt, timer::param,
timer::Timer,
};
#[non_exhaustive]
#[derive(Debug, Eq, PartialEq)]
pub enum Error<E: crate::Error> {
Other(E),
}
impl<E: crate::Error> crate::Error for Error<E> {}
pub trait Clock: Sized {
type Rep: TimeInt;
const PERIOD: Period;
type ImplError: crate::Error;
fn now(&self) -> Result<Instant<Self>, Error<Self::ImplError>>;
fn new_timer<Dur: Duration>(
&self,
duration: Dur,
) -> Timer<param::OneShot, param::Armed, Self, Dur> {
Timer::<param::None, param::None, Self, Dur>::new(&self, duration)
}
}