Skip to main content

foxtive_supervisor/runtime/
helpers.rs

1//! Public helper functions for task supervision
2
3use super::core::TaskRuntime;
4use super::types::SupervisionResult;
5use crate::contracts::SupervisedTask;
6use tokio::task::JoinHandle;
7
8/// Spawn a single supervised task (fire and forget, no dependencies)
9pub fn spawn_supervised<T: SupervisedTask + 'static>(task: T) -> JoinHandle<SupervisionResult> {
10    TaskRuntime::start_one(task)
11}
12
13/// Spawn multiple supervised tasks (no inter-task dependencies)
14pub fn spawn_supervised_many<T: SupervisedTask + 'static>(
15    tasks: Vec<T>,
16) -> Vec<JoinHandle<SupervisionResult>> {
17    tasks.into_iter().map(spawn_supervised).collect()
18}