Expand description
§dagex
A pure Rust DAG executor supporting implicit node connections, branching, and config sweeps.
§Features
- Implicit Node Connections: Nodes are automatically connected based on execution order
- Branching: Create parallel execution paths with
.branch() - Config Sweeps: Use
.variants()to create configuration variations - DAG Optimization: Automatic inspection and optimization of execution paths
- Mermaid Visualization: Generate diagrams with
to_mermaid()
§Example
use dagex::{Graph, GraphData};
use std::collections::HashMap;
fn data_source(_: &HashMap<String, GraphData>) -> HashMap<String, GraphData> {
let mut result = HashMap::new();
result.insert("output".to_string(), GraphData::string("Hello, World!"));
result
}
fn processor(inputs: &HashMap<String, GraphData>) -> HashMap<String, GraphData> {
let mut result = HashMap::new();
if let Some(data) = inputs.get("input").and_then(|d| d.as_string()) {
result.insert("output".to_string(), GraphData::string(data.to_uppercase()));
}
result
}
let mut graph = Graph::new();
graph.add(data_source, Some("Source"), None, Some(vec![("output", "output")]));
graph.add(processor, Some("Processor"), Some(vec![("output", "input")]), Some(vec![("output", "output")]));
let dag = graph.build();Structs§
- Dag
- Directed Acyclic Graph representing the optimized execution plan
- DagStats
- Execution
Result - Execution result that tracks outputs per node and per branch
- Graph
- Graph builder for constructing graphs with implicit node connections
- Port
Summary - Summary statistics for a single scalar output port.
- Stat
Result - Output of
Dag::predict().
Enums§
- Distribution
- Parametric and empirical probability distributions.
- Graph
Data - GraphData enum supporting multiple data types
- Predict
Target - Specifies where the statistical forward pass should stop.
Type Aliases§
- Dist
Context - A mapping from port name → Distribution, mirroring
ExecutionContext. - Dist
Transfer Fn - Optional analytical distribution transfer for a node.
- Execution
Context - Execution context for storing variable values during graph execution
- Node
Function - Type alias for node execution functions using GraphData Takes GraphData ports as input, returns output ports
- NodeId
- Unique identifier for a node