3 个版本 (破坏性更新)

使用旧的 Rust 2015

0.2.0 2017年11月25日
0.1.0 2017年11月9日
0.0.0 2017年9月21日

#cron-expression 中排名 15

Download history 25/week @ 2024-03-08 87/week @ 2024-03-15 91/week @ 2024-03-22 40/week @ 2024-03-29 15/week @ 2024-04-05 4/week @ 2024-04-12 8/week @ 2024-04-19

每月下载 60
2 个crate中使用(通过 task

BSD-4-Clause

49KB
920

crontab.rs

一个轻量级的 crontab 解析器,具有最小功能,不依赖于 Rust nightly。具有枚举下一次 cron 调度应调用的函数。

Crontab 表达式

MINUTES    HOURS    DAY_OF_MONTH    MONTHS    DAY_OF_WEEK

             Range:    Special characters:
Minutes      = [0,59]  , - * /
Hours        = [0,23]  , - * /
Day of month = [1,31]  , - * /
Months       = [1,12]  , - * /
Day of week  = [0,6]   , - * /

Ranges are inclusive.

(待办:使用 EBNF 符号编写。)

例如,crontab.rs 支持以下功能

  • 通配符:* * * * *
  • 值:0 0 1 1 *
  • 多个值:0,5,10 * * * *
  • 范围:0-30 * * * *
  • 步长:*/15 * * * *
  • 以上所有组合:1,2,3,5-10,*/15 * * * *

您可以使用 crontab.guru 来构建和测试您的 crontab 表达式。

用法

extern crate crontab;
extern crate time;

use crontab::Crontab;
use time::{Timespec, at_utc};

let crontab = Crontab::parse("0 * * * *").expect("unknown parse error"); // every hour

// Access to the underlying schedule components:
println!("Minutes: {:?}", crontab.schedule.minutes);
println!("Hours: {:?}", crontab.schedule.hours);

// See when the next event will occur:
crontab.find_next_event(); // Option<Tm>
crontab.find_next_event_utc(); // Option<Tm>

// Or when the next event relative to a given time is:
let time = at_utc(Timespec::new(1500001200, 0));
crontab.find_event_after(&time); // Option<Tm>

请参阅 examples/usage.rs,该文件保证与当前库版本兼容,并使用库功能。

待办事项

  • 修复调度器以支持星期几(目前被忽略,尽管值被正确解析)。

  • 支持 crontab 扩展,例如秒解析、年数字和字符串值组件。

  • 支持以下关键词,例如 @yearly 等。

许可证

BSD 4条款

版权(c)2017,布兰登·托马斯。保留所有权利。

在满足以下条件的情况下,允许重新分发和使用源代码和二进制形式,包括修改或不修改:

  1. 源代码的重新分发必须保留上述版权声明、本条件列表和以下免责声明。

  2. 二进制形式的重新分发必须在与重新分发一起提供的文档和其他材料中重新生产上述版权声明、本条件列表和以下免责声明。

  3. 提及此软件的功能或使用的所有广告材料必须显示以下致谢:

    本产品包括布兰登·托马斯([email protected][email protected])开发的软件。

  4. 未经具体事先书面许可,不得使用版权持有者或其贡献者的姓名来认可或推广由此软件派生出的产品。

本软件按“现状”由版权持有者提供,任何明示或暗示的保证,包括但不限于适销性和针对特定目的的适用性保证均予以否认。在任何情况下,版权持有者均不对任何直接、间接、偶然、特殊、示范性或后果性损害(包括但不限于替代货物或服务的采购;使用、数据或利润的损失;或业务中断)承担责任,无论何种原因造成,也不论基于何种责任理论,无论是在合同、严格责任还是侵权(包括疏忽或其他)中,即使被告知了此类损害的可能性。

依赖关系

~0.6–1MB
~15K SLoC