minitimer 0.1.7

A mini timer of delayed tasks. Only asynchronous tasks are possible on tokio runtime, and dynamic add/cancel/remove is supported.
Documentation
use async_trait::async_trait;
use minitimer::{TaskBuilder, TaskRunner};

struct DelayedPrintTask {
    message: String,
}

#[async_trait]
impl TaskRunner for DelayedPrintTask {
    type Output = ();

    async fn run(&self) -> Result<Self::Output, Box<dyn std::error::Error + Send + Sync>> {
        println!("Task executed: {}", self.message);
        Ok(())
    }
}

#[tokio::main]
async fn main() {
    let timer = minitimer::MiniTimer::new();

    let task = TaskBuilder::new(1)
        .with_frequency_once_by_seconds(3)
        .spawn_async(DelayedPrintTask {
            message: "Hello from minitimer!".to_string(),
        })
        .unwrap();

    timer.add_task(task).unwrap();

    println!("Timer started. Waiting 5 seconds...");
    tokio::time::sleep(std::time::Duration::from_secs(5)).await;

    println!("Example completed.");
}