pub struct TaskDag { /* private fields */ }Expand description
Directed Acyclic Graph for task dependencies
Implementations§
Source§impl TaskDag
impl TaskDag
Sourcepub fn add_node(&mut self, task_id: TaskId, task_name: impl Into<String>)
pub fn add_node(&mut self, task_id: TaskId, task_name: impl Into<String>)
Add a node to the DAG
Sourcepub fn add_dependency(
&mut self,
task_id: TaskId,
depends_on: TaskId,
) -> Result<()>
pub fn add_dependency( &mut self, task_id: TaskId, depends_on: TaskId, ) -> Result<()>
Add a dependency relationship: task_id depends on depends_on
This means depends_on must complete before task_id can execute.
§Errors
Returns an error if either task is not found in the DAG or if adding this dependency would create a cycle.
Sourcepub fn remove_dependency(&mut self, task_id: TaskId, depends_on: TaskId)
pub fn remove_dependency(&mut self, task_id: TaskId, depends_on: TaskId)
Remove a dependency relationship
Sourcepub fn get_leaves(&self) -> Vec<TaskId> ⓘ
pub fn get_leaves(&self) -> Vec<TaskId> ⓘ
Get all leaf nodes (nodes with no dependents)
Sourcepub fn get_dependencies(&self, task_id: &TaskId) -> Option<Vec<TaskId>>
pub fn get_dependencies(&self, task_id: &TaskId) -> Option<Vec<TaskId>>
Get the dependencies of a task
Sourcepub fn get_dependents(&self, task_id: &TaskId) -> Option<Vec<TaskId>>
pub fn get_dependents(&self, task_id: &TaskId) -> Option<Vec<TaskId>>
Get the dependents of a task
Sourcepub fn topological_sort(&self) -> Result<Vec<TaskId>>
pub fn topological_sort(&self) -> Result<Vec<TaskId>>
Perform topological sort on the DAG
Returns tasks in execution order (dependencies before dependents).
§Errors
Returns an error if the DAG contains a cycle.
Sourcepub fn node_count(&self) -> usize
pub fn node_count(&self) -> usize
Get the number of nodes in the DAG
Sourcepub fn edge_count(&self) -> usize
pub fn edge_count(&self) -> usize
Get the number of edges in the DAG
Trait Implementations§
Source§impl<'de> Deserialize<'de> for TaskDag
impl<'de> Deserialize<'de> for TaskDag
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for TaskDag
impl RefUnwindSafe for TaskDag
impl Send for TaskDag
impl Sync for TaskDag
impl Unpin for TaskDag
impl UnwindSafe for TaskDag
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more