basic/
basic.rs

1use ascii_dag::graph::DAG;
2
3fn main() {
4    println!("=== Basic Usage Examples ===\n");
5
6    // Example 1: Simple chain
7    println!("1. Simple Chain (A -> B -> C):");
8    let dag = DAG::from_edges(&[(1, "A"), (2, "B"), (3, "C")], &[(1, 2), (2, 3)]);
9    println!("{}\n", dag.render());
10
11    // Example 2: Diamond pattern
12    println!("2. Diamond Pattern:");
13    let dag = DAG::from_edges(
14        &[(1, "Root"), (2, "Left"), (3, "Right"), (4, "Merge")],
15        &[(1, 2), (1, 3), (2, 4), (3, 4)],
16    );
17    println!("{}\n", dag.render());
18
19    // Example 3: Builder API
20    println!("3. Builder API:");
21    let mut dag = DAG::new();
22    dag.add_node(1, "Parse");
23    dag.add_node(2, "Compile");
24    dag.add_node(3, "Link");
25    dag.add_edge(1, 2);
26    dag.add_edge(2, 3);
27    println!("{}\n", dag.render());
28
29    // Example 4: Multi-convergence
30    println!("4. Multi-Convergence:");
31    let dag = DAG::from_edges(
32        &[(1, "E1"), (2, "E2"), (3, "E3"), (4, "Final")],
33        &[(1, 4), (2, 4), (3, 4)],
34    );
35    println!("{}\n", dag.render());
36}