backport some nice things from routing engine and cleanup a bit
[Mitarbeiter/Tim-Zeitz/stud-rust-base.git] / src / bin / example.rs
1 use stud_rust_base::{io::*, time::report_time, types::*};
2
3 use std::{env, error::Error, path::Path};
4
5 fn main() -> Result<(), Box<dyn Error>> {
6     let mut args = env::args();
7     args.next();
8
9     let arg = &args.next().expect("No directory arg given");
10     let path = Path::new(arg);
11
12     let first_out = Vec::<EdgeId>::load_from(path.join("first_out"))?;
13     let head = Vec::<NodeId>::load_from(path.join("head"))?;
14     let travel_time = Vec::<Weight>::load_from(path.join("travel_time"))?;
15
16     report_time("iterating over arcs of some node", || {
17         let node_id = 42;
18         for edge_id in first_out[node_id]..first_out[node_id + 1] {
19             println!(
20                 "There is an arc from {} to {} with weight {}",
21                 node_id, head[edge_id as usize], travel_time[edge_id as usize]
22             );
23         }
24     });
25
26     vec![42; 42].write_to(&path.join("distances"))?;
27
28     Ok(())
29 }