seq10k/
seq10k.rs

1extern crate rgraph;
2
3//use rgraph::printer;
4use rgraph::*;
5
6fn main() {
7    let mut g = Graph::new();
8
9    let max = 10000;
10
11    // generate 10000 nodes
12    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    // add sequential linking
23    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}