tokio-tasks

Task managment for tokio

Crates.io License Build status Docs

```rust use tokiotasks::{TaskBuilder, runtasks, shutdown, cancelable, RunToken};

// Main task, program will shut down if when finishes async fn maintask(runtoken: RunToken) -> Result<(), String> { println!("Main task start"); match cancelable(&runtoken, tokio::time::sleep(std::time::Duration::fromsecs(10))).await { Ok(()) => println!("Main task finished"), Err(_) => println!("Main task cancled"), } Ok(()) }

// Critical task, program will shut down if this finished with an error async fn criticaltask(runtoken: RunToken) -> Result<(), String> { println!("Critical task start"); match cancelable(&runtoken, tokio::time::sleep(std::time::Duration::fromsecs(1))).await { Ok(()) => println!("Critical task finished"), Err(_) => println!("Critical task cancled"), } Ok(()) }

[tokio::main]

async fn main() { TaskBuilder::new("maintask") .main() .shutdownorder(1) .create(|rt| main_task(rt));

TaskBuilder::new("critical_task")
    .critical()
    .shutdown_order(2)
    .create(|rt| critical_task(rt));

// Shutdown the application on ctrl+c
tokio::spawn(async {
    tokio::signal::ctrl_c().await.unwrap();
    shutdown("ctrl+c".to_string());
});

// Run until all tasks stop
run_tasks().await;

} ```