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}