use std::time::Duration;
use super::Schedule;
pub struct IntervalSchedule {
delay: Option<Duration>,
interval: Duration,
}
impl IntervalSchedule {
pub fn every(interval: Duration) -> Self {
Self {
delay: None,
interval,
}
}
pub fn with_initial_delay(interval: Duration, delay: Duration) -> Self {
Self {
delay: Some(delay),
interval,
}
}
}
impl<T> Schedule<T> for IntervalSchedule {
fn next(&self, _: T) -> Option<Duration> {
Some(self.interval)
}
fn initial(&self) -> Option<Duration> {
self.delay.or(Some(self.interval))
}
}