chronos_parser_rs/
cron_specification.rs

1use chrono::{DateTime, TimeZone};
2
3use crate::{CronEvaluator, Expr};
4
5pub trait Specification<T>: Clone {
6  fn is_satisfied_by(&self, arg: &T) -> bool;
7}
8
9#[derive(Debug, Clone)]
10pub struct CronSpecification {
11  expr: Expr,
12}
13
14impl CronSpecification {
15  pub fn new(expr: Expr) -> Self {
16    Self { expr }
17  }
18}
19
20impl<Tz: TimeZone> Specification<DateTime<Tz>> for CronSpecification {
21  fn is_satisfied_by(&self, datetime: &DateTime<Tz>) -> bool {
22    CronEvaluator::new(datetime).eval(&self.expr)
23  }
24}