pub trait MutMatrix {
type Scalar;
// Required methods
unsafe fn col_mut(&mut self, idx: usize) -> Vec<*mut Self::Scalar>;
unsafe fn row_mut(&mut self, idx: usize) -> Vec<*mut Self::Scalar>;
unsafe fn swap(&mut self, idx1: usize, idx2: usize, shape: Shape);
unsafe fn swap_with_perm(&mut self, p: &Vec<(usize, usize)>, shape: Shape);
}