quartz.rs

Minimalist scheduling library for Rust

This library is ported from go-quartz by reugn.

Example

```rust use std::{thread, time::Duration};

struct MyTask;

impl quartzsched::Job for Box { fn execute(&self) { println!("[+] Executing 'MyTask'"); } fn description(&self) -> String { "my task".tostring() } fn key(&self) -> i64 { 43 } }

fn main() { let mut sched: quartzsched::Scheduler = quartzsched::Scheduler::new();

// start the scheduler
// spawns execution and feeder threads
sched.start();

// execute after duration N
sched.schedule_task(quartz_sched::schedule_task_after(
    Duration::from_secs(1),
    Box::new(MyTask),
));

// execute every interval N
sched.schedule_task(quartz_sched::schedule_task_every(
    Duration::from_secs(4),
    Box::new(quartz_sched::SimpleCallbackJob::new(
        Box::new(|_| {
            println!("[+] From closure");
        }),
        "".to_string(),
        8,
    )),
));

// delete task associated with key from scheduler
_ = sched.delete_task(43);

// get scheduled job meta info from scheduler
match sched.get_scheduled_job(/*key*/ 8) {
    Some(job) => {
        println!("[+] Next run at tick: {}", &job.next_runtime);
    }
    None => {}
};

thread::sleep(Duration::from_secs(20));

// scheduler will stop after getting dropped
// alternatively, call sched.stop() to stop
// the scheduler.

}

```

Status

Not every feature is implemented yet. Under development. Please use with caution.