pub trait TimeSequence {
// Required methods
fn _future_raw(
&self,
t0: &NaiveDateTime,
) -> Box<dyn Iterator<Item = Range> + '_>;
fn _past_raw(
&self,
t0: &NaiveDateTime,
) -> Box<dyn Iterator<Item = Range> + '_>;
// Provided methods
fn future(&self, t0: &NaiveDateTime) -> Box<dyn Iterator<Item = Range> + '_> { ... }
fn past(&self, t0: &NaiveDateTime) -> Box<dyn Iterator<Item = Range> + '_> { ... }
}