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.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§