hermes_runtime_components/traits/
task.rs

1use alloc::vec::Vec;
2
3use cgp::prelude::*;
4
5use crate::traits::stream::HasStreamType;
6
7#[async_trait]
8pub trait Task: Async {
9    async fn run(self);
10}
11
12#[derive_component(ConcurrentTaskRunnerComponent, ConcurrentTaskRunner<Runtime>)]
13#[async_trait]
14pub trait CanRunConcurrentTasks: HasStreamType {
15    async fn run_concurrent_tasks<T>(&self, tasks: Vec<T>)
16    where
17        T: Task;
18
19    async fn run_concurrent_task_stream<T>(&self, tasks: Self::Stream<T>)
20    where
21        T: Task;
22}