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}