yui-matrix 0.4.0

Matrix Library for YUI
Documentation
pub(crate) fn perm_for_indices<'a, I>(n: usize, indices: I) -> sprs::PermOwned
where I: IntoIterator<Item = &'a usize> { 
    use std::collections::BTreeSet;

    let mut set: BTreeSet<_> = (0..n).collect();
    let mut vec: Vec<usize> = vec![];

    for &i in indices { 
        assert!(i < n);
        vec.push(i);
        set.remove(&i);
    }
    for i in set { 
        vec.push(i);
    }

    let mut inv = vec![0; n];
    for (i, j) in vec.into_iter().enumerate() {
        inv[j] = i;
    }

    sprs::PermOwned::new(inv)
}