// use veho::matrix::Matrix; // // pub fn zipper(a: MA, b: MB, mut f: F) -> Matrix // where RA: IntoIterator, // RB: IntoIterator, // MA: IntoIterator, // MB: IntoIterator, // F: FnMut(RA::Item, RB::Item) -> T // { // a.into_iter().zip(b).map( // |(ra, rb)| ra.into_iter().zip(rb).map( // |(a, b)| f(a, b) // ).collect::>() // ).collect::>() // } // // pub trait Mutaters: IntoIterator where // R: IntoIterator, // { // fn mutate(self, mut f: F) where // Self: Sized, // R: Sized, // F: FnMut(R::Item) -> () // { // for row in self.into_iter() { // for x in row.into_iter() { // f(x); // } // } // } // } // // impl Mutaters for M where // R: IntoIterator, // M: IntoIterator, // {} // // #[cfg(test)] // mod tests_mutaters { // use super::*; // // #[test] // fn test_vec_mutate() { // let mut mx = vec![ // vec![1, 1, 1], // vec![2, 2, 2], // vec![3, 3, 3] // ]; // // let f: fn(&mut i32) = |x| *x += 1; // (&mut mx).mutate(|x| *x += 1); // println!("{:?}", mx); // } // }