1extern crate rgraph;
2
3use rgraph::*;
5
6fn main() {
7 let mut g = Graph::new();
8
9 let max = 10000;
10
11 for i in 1..max {
13 let name: String = format!("task{}", i);
14 g.add_node(create_node!(name: name, ( input : u32) -> (output : u32)
15 {
16 output = input +1 ;
17 }))
18 .unwrap();
19 }
20
21
22 for i in 1..max - 1 {
24 let src = format!("task{}::output", i);
25 let sink = format!("task{}::input", i + 1);
26 g.bind_asset(src.as_str(), sink.as_str())
27 .expect("binding must be doable");
28 }
29
30 g.define_freestanding_asset("start", 0u32).expect("could not create asset");
31 g.bind_asset("start", "task1::input")
32 .expect("could not bind first tast to start value");
33
34 let mut cache = ValuesCache::new();
35 let mut solver = GraphSolver::new(&g, &mut cache);
36
37 let last_task = format!("task{}", max-1);
38 solver.execute(last_task.as_str()).expect("this should run");
39}