dag_flow/
task.rs

1use std::collections::HashMap;
2
3use crate::context::Value;
4
5pub type Input<'a, T> = Value<'a, Option<T>>;
6
7#[trait_variant::make(Send + Sync)]
8#[dynosaur::dynosaur(pub(crate) DynTask = dyn(box) Task)]
9pub trait Task<I, D> {
10    fn id(&self) -> I;
11
12    fn dependencies(&self) -> Vec<I> {
13        Vec::new()
14    }
15
16    fn is_auto(&self) -> bool {
17        true
18    }
19
20    async fn run(&self, inputs: HashMap<I, Input<'_, D>>) -> Option<D>;
21}