1mod entry;
4mod handle;
5mod repeater;
6
7use std::time::{Duration, SystemTime, SystemTimeError};
8
9pub use entry::RepeaterEntry;
10pub use handle::RepeaterHandle;
11pub use repeater::Repeater;
12
13#[derive(Debug, Clone, Copy)]
15pub enum Delay {
16 Relative(Duration),
17 Absolute(SystemTime),
18 None,
19}
20
21impl TryFrom<Delay> for Duration {
22 type Error = SystemTimeError;
23
24 fn try_from(value: Delay) -> Result<Duration, SystemTimeError> {
25 match value {
26 Delay::Relative(dur) => Ok(dur),
27 Delay::Absolute(timestamp) => timestamp.duration_since(SystemTime::now()),
28 Delay::None => Ok(Duration::ZERO),
29 }
30 }
31}