dsalgo 0.3.10

A package for Datastructures and Algorithms.
Documentation
pub fn tree_edges_with_data_to_graph<T>(
    tree_edges: &[(usize, usize, T)]
) -> Vec<Vec<(usize, T)>>
where
    T: Clone,
{
    let mut graph = vec![vec![]; tree_edges.len() + 1];

    for &(u, v, ref data) in tree_edges {
        graph[u].push((v, data.clone()));

        graph[v].push((u, data.clone()));
    }

    graph
}

pub fn tree_edges_to_graph(tree_edges: &[(usize, usize)]) -> Vec<Vec<usize>> {
    tree_edges_with_data_to_graph(
        tree_edges
            .iter()
            .map(|&(u, v)| (u, v, ()))
            .collect::<Vec<_>>()
            .as_slice(),
    )
    .iter()
    .map(|edges| edges.iter().map(|&(v, _)| v).collect())
    .collect()
}