use std::hash::Hash; pub trait Unwinds: IntoIterator where Self: Sized, K: Hash + Eq { fn move_unwind(self) -> (Vec, Vec) where { let some: (Vec, Vec) = self.into_iter().unzip(); return some; } // fn ref_unwind<'a>(self) -> (Vec<&'a K>, Vec<&'a V>) where // K: 'a, // V: 'a, // KVS: IntoIterator // { // self.into_iter().map(|&(ref a, ref b)| (a, b)).unzip() // } // // fn copy_unwind<'a>(self) -> (Vec, Vec) where // K: 'a + Hash + Eq + Copy, // V: 'a + Copy, // KVS: IntoIterator // { // self.into_iter().map(|&(ref a, ref b)| (a, b)).unzip() // } } impl Unwinds for I where I: IntoIterator, K: Hash + Eq {} #[cfg(test)] mod test { use veho::entries::unwind; #[test] fn test_move_unwind() { let tuples = vec![ (1, 10.0), (2, 20.0), (3, 30.0), ]; let (a, b) = unwind(tuples); println!("{:?}", a); println!("{:?}", b); // println!("{:?}", tuples); } }