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.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".