dsalgo 0.3.10

A package for Datastructures and Algorithms.
Documentation
pub fn transpose<T: Clone>(g: Vec<Vec<(usize, T)>>) -> Vec<Vec<(usize, T)>> {
    let n = g.len();

    let mut t = vec![vec![]; n];

    for (u, edges) in g.into_iter().enumerate() {
        for (v, w) in edges.into_iter() {
            t[v].push((u, w));
        }
    }

    t
}

#[cfg(test)]

mod tests {

    use super::*;

    #[test]

    fn test() {
        let g = vec![vec![(1, 0), (2, 1)], vec![(2, 2)], vec![(0, 3)]];

        let t = vec![vec![(2, 3)], vec![(0, 0)], vec![(0, 1), (1, 2)]];

        assert_eq!(transpose(g), t);
    }
}