pub trait TaskResolver<T: TaskNodeData> {
// Required method
fn resolve(&self, name: &str) -> Option<TaskResolution<T>>;
}Expand description
Trait for resolving task names to their definitions.
Implement this trait to provide task lookup and group expansion
for use with [TaskGraph::build_for_task_with_resolver].
§Example
ⓘ
impl TaskResolver<Task> for Tasks {
fn resolve(&self, name: &str) -> Option<TaskResolution<Task>> {
let definition = self.get(name)?;
match definition {
TaskDefinition::Single(task) => Some(TaskResolution::Single(task.clone())),
TaskDefinition::Group(TaskGroup::Sequential(tasks)) => {
let children = (0..tasks.len())
.map(|i| format!("{}[{}]", name, i))
.collect();
Some(TaskResolution::Sequential { children })
}
// ... parallel handling
}
}
}Required Methods§
Sourcefn resolve(&self, name: &str) -> Option<TaskResolution<T>>
fn resolve(&self, name: &str) -> Option<TaskResolution<T>>
Resolve a task name to its definition (single or group).
Returns None if the task doesn’t exist.