Crate dagex

Crate dagex 

Source
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
ExecutionResult
Execution result that tracks outputs per node and per branch
Graph
Graph builder for constructing graphs with implicit node connections

Enums§

GraphData
GraphData enum supporting multiple data types

Type Aliases§

ExecutionContext
Execution context for storing variable values during graph execution
NodeFunction
Type alias for node execution functions using GraphData Takes GraphData ports as input, returns output ports
NodeId
Unique identifier for a node