7个版本 (2个稳定版本)

使用旧的Rust 2015

1.0.1 2019年4月3日
0.1.5 2019年3月19日
0.1.4 2017年12月15日

#2353 in 解析器实现

MIT许可协议

38KB
1K SLoC

Scron

Rust中的Scron表达式解析器

源自github.com/zslayton/cron

用法

extern crate scron;
use scron::Task;
use scron::Tasks;
use std::{thread,time};
use std::thread::sleep;


fn main() {
    thread::spawn(move || {
        let task = Task::new("gen data".to_owned(), "* 13 23 * * *", || {
            one_task();
        });

        one_task();

        let mut tasks: Tasks = Tasks { task: vec![task] };
        tasks.run();
    });

    loop {
        sleep(time::Duration::from_millis(100))
    }
}

fn one_task() {
    println!("hohoho");
}

scron

extern crate scron;
extern crate chrono;

use scron::Schedule;
use chrono::Utc;
use std::str::FromStr;

fn main() {
  //               sec  min   hour   day of month   month   day of week   year
  let expression = "0   30   9,12,15     1,15       May-Aug  Mon,Wed,Fri  2018/2";
  let schedule = Schedule::from_str(expression).unwrap();
  println!("Upcoming fire times:");
  for datetime in schedule.upcoming(Utc).take(10) {
    println!("-> {}", datetime);
  }
}

/*
Upcoming fire times:
-> 2018-06-01 09:30:00 UTC
-> 2018-06-01 12:30:00 UTC
-> 2018-06-01 15:30:00 UTC
-> 2018-06-15 09:30:00 UTC
-> 2018-06-15 12:30:00 UTC
-> 2018-06-15 15:30:00 UTC
-> 2018-08-01 09:30:00 UTC
-> 2018-08-01 12:30:00 UTC
-> 2018-08-01 15:30:00 UTC
-> 2018-08-15 09:30:00 UTC
*/

依赖项

~5.5MB
~105K SLoC