pub struct WorkflowDef { /* private fields */ }Expand description
Workflow definition (static DAG structure)
Corresponds to Lean: structure WorkflowDef
Precomputes adjacency lists and a node-to-index map for O(1) lookups.
Implementations§
Source§impl WorkflowDef
impl WorkflowDef
Sourcepub fn new(nodes: Vec<u64>, edges: Vec<Edge>) -> Self
pub fn new(nodes: Vec<u64>, edges: Vec<Edge>) -> Self
Create a new workflow definition (unchecked).
Prefer validated() for production use to ensure all edge endpoints
reference existing nodes.
Sourcepub fn validated(
nodes: Vec<u64>,
edges: Vec<Edge>,
) -> Result<Self, WorkflowError>
pub fn validated( nodes: Vec<u64>, edges: Vec<Edge>, ) -> Result<Self, WorkflowError>
Create a validated workflow definition.
Sorts and deduplicates node IDs, then verifies that all edge endpoints reference existing nodes.
§Errors
Returns WorkflowError::NodeNotFound if an edge references a node not in the node list.
Sourcepub fn node_index(&self, node_id: u64) -> Option<usize>
pub fn node_index(&self, node_id: u64) -> Option<usize>
Look up the dense index for a node ID via binary search.
Sourcepub fn require_node(&self, node_id: u64) -> Result<usize, WorkflowError>
pub fn require_node(&self, node_id: u64) -> Result<usize, WorkflowError>
Require a node to exist, returning its index or an error.
Sourcepub fn is_source(&self, n: u64) -> bool
pub fn is_source(&self, n: u64) -> bool
Check if node has no incoming edges (ready to start)
Corresponds to Lean: def WorkflowDef.is_source
Sourcepub fn is_sink(&self, n: u64) -> bool
pub fn is_sink(&self, n: u64) -> bool
Check if node has no outgoing edges (terminal)
Corresponds to Lean: def WorkflowDef.is_sink
Sourcepub fn dependencies(&self, n: u64) -> Vec<u64>
pub fn dependencies(&self, n: u64) -> Vec<u64>
Get dependencies of a node (predecessors)
Corresponds to Lean: def WorkflowDef.dependencies
Sourcepub fn dependents(&self, n: u64) -> Vec<u64>
pub fn dependents(&self, n: u64) -> Vec<u64>
Get dependents of a node (successors)
Corresponds to Lean: def WorkflowDef.dependents
Sourcepub fn node_count(&self) -> usize
pub fn node_count(&self) -> usize
Get the number of nodes
Sourcepub fn edge_count(&self) -> usize
pub fn edge_count(&self) -> usize
Get the number of edges
Sourcepub fn contains_node(&self, n: u64) -> bool
pub fn contains_node(&self, n: u64) -> bool
Check if a node exists in the workflow
Trait Implementations§
Source§impl Clone for WorkflowDef
impl Clone for WorkflowDef
Source§fn clone(&self) -> WorkflowDef
fn clone(&self) -> WorkflowDef
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for WorkflowDef
impl Debug for WorkflowDef
Source§impl Default for WorkflowDef
impl Default for WorkflowDef
Source§fn default() -> WorkflowDef
fn default() -> WorkflowDef
Source§impl PartialEq for WorkflowDef
impl PartialEq for WorkflowDef
Source§fn eq(&self, other: &WorkflowDef) -> bool
fn eq(&self, other: &WorkflowDef) -> bool
self and other values to be equal, and is used by ==.