[][src]Function rustasim::network::routing::route_all

pub fn route_all(
    network: &Network,
    source_id: usize
) -> HashMap<usize, Vec<usize>>

Very similar to route_id, but returns all minimally-equal paths

Route to self exists, but has no guaranteed value.

Examples

use std::collections::HashMap;
use rustasim::network::routing::route_all;

// +-- 5 --+
// |       |
// 1 - 2 - 3 - 4
let mut network = HashMap::new();
network.insert(1, vec![2, 5]);
network.insert(2, vec![1, 3]);
network.insert(3, vec![5, 2, 4]);
network.insert(4, vec![3]);
network.insert(5, vec![1, 3]);

// route from 1
let mut route = route_all(&network, 1);
for (_, r) in route.iter_mut() { r.sort(); } // for ease of testing
assert_eq!(route[&2], vec![2]);
assert_eq!(route[&3], vec![2, 5]);
assert_eq!(route[&4], vec![2, 5]);

// route from 2
let mut route = route_all(&network, 2);
for (_, r) in route.iter_mut() { r.sort(); } // for ease of testing
assert_eq!(route[&1], vec![1]);
assert_eq!(route[&3], vec![3]);
assert_eq!(route[&4], vec![3]);
assert_eq!(route[&5], vec![1, 3]);