Skip to main content

TaskResolver

Trait TaskResolver 

Source
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§

Source

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.

Implementors§