scheduled-executor 0.4.0

Single and multi-threaded task scheduler
Documentation
extern crate scheduled_executor;

use scheduled_executor::CoreExecutor;

use std::time::{Duration, Instant};
use std::thread;

fn task_body(task_id: i32, start_time: Instant) {
    println!("> Task {} is being executed", task_id);
    println!("  time elapsed from from start: {:?} seconds", start_time.elapsed().as_secs());
    println!("  thread: {}", thread::current().name().unwrap());
}

fn main() {
    let executor = CoreExecutor::new()
        .expect("Core creation failed");

    let start_time = Instant::now();

    let task_1 = executor.schedule_fixed_rate(
        Duration::from_secs(2),
        Duration::from_secs(5),
        move |_| { task_body(1, start_time) }
    );
    let _task_2 = executor.schedule_fixed_rate(
        Duration::from_secs(3),
        Duration::from_secs(3),
        move |_| { task_body(2, start_time) }
    );

    println!("Tasks have been scheduled");
    thread::sleep(Duration::from_secs(20));
    task_1.stop();
    println!("Task1 has been stopped");
    thread::sleep(Duration::from_secs(10));
    println!("Terminating");
}