6 个版本

0.2.0 2024年7月2日
0.1.4 2023年11月2日
0.1.3 2024年7月2日
0.1.2 2023年6月6日
0.1.0 2023年3月14日

#9 in #cron-expression

每月 24 次下载

MIT 许可证

11KB
84 代码行数(不包括注释)

cron-job crates.io crates.io docs

cron-job 库允许您创建 cronjob。这基本上是 cron 库的实现。

入门

将以下内容添加到您的项目中

[dependencies]
cron_job = "0.2.0"

示例

您可以将自己的函数作为作业进行调度。

extern crate cron_job;
use cron_job::CronJob;

fn main() {
    // Create CronJob
    let mut cron = CronJob::default();
    // Add the function
    cron.new_job("* * * * * *", run_on_cron);
    // Start job
    cron.start();
}

// The function to be executed.
fn run_on_cron() {
    println!("Executed function");
}

也可以添加具有不同 cron 表达式的多个函数。

extern crate cron_job;
use cron_job::CronJob;

fn main() {
    // Create CronJob
    let mut cron = CronJob::default();
    // Add the function to be run every second
    cron.new_job("* * * * * *", run_every_second);
    // Add the function to be run every 5 seconds
    cron.new_job("*/5 * * * * *", run_every_five_seconds);
    // Start jobs
    cron.start();
}

// The function to be executed every second.
fn run_every_second() {
    println!("1 second");
}

// The function to be executed every 5 seconds.
fn run_every_five_seconds() {
    println!("5 seconds");
}

运行实现 Job 特质的作业

由于用作作业的函数不能有任何参数,因此可以使用 Job 特质来实现结构体。这样,如果需要将任何参数传递给函数,则可以作为结构体属性传递。

extern crate cron_job;
use cron_job::CronJob;

fn main() {
    // Create HelloJob
    let helloJob = HelloJob{ name: "John" };
    // Create CronJob
    let mut cron = CronJob::default();
    // Say hello every second
    cron.new_job("* * * * * *", helloJob);
    // Start jobs
    cron.start();
}

// The job to be executed
struct HelloJob {
    name: String
}

impl Job for HelloJob {
    fn run(&self) {
        println!("Hello, {}!", self.name);
    }
}

函数和作业也可以混合使用。

extern crate cron_job;
use cron_job::CronJob;

fn main() {
    // Create HelloJob
    let helloJob = HelloJob{ name: "John" };
    // Create CronJob
    let mut cron = CronJob::default();
    // Run function every second
    cron.new_job("* * * * * *", run_every_second);
    // Say hello every second
    cron.new_job("* * * * * *", helloJob);
    // Start jobs
    cron.start();
}
// The function to be executed every second.
fn run_every_second() {
    println!("1 second");
}

// The job to be executed
struct HelloJob {
    name: String
}

// Very important, implement the Job trait and its functions.
impl Job for HelloJob {
    fn run(&self) {
        println!("Hello, {}!", self.name);
    }
}

依赖项

~2–7.5MB
~47K SLoC