rust iter3ok.
#[derive(Debug)] enum Unit{ INT(i32), STR(String), FLOAT(f32) } #[derive(Debug)] struct People{ name: String, elements: Vec<Unit> } impl IntoIterator for People { type Item = Unit; type IntoIter = std::vec::IntoIter<Unit>; fn into_iter(self) -> Self::IntoIter { self.elements.into_iter() } } struct Family{ name:String, peoples: Vec<People> } impl IntoIterator for Family { type Item = Vec<Unit>; type IntoIter = std::vec::IntoIter<Vec<Unit>>; fn into_iter(self) -> Self::IntoIter { let mut tmp_out:Vec<Vec<Unit>> = vec![]; // self.peoples.into_iter() for each in self.peoples{ let mut tmp_inner :Vec<Unit>= vec![]; for i in each.elements{ tmp_inner.push(i); } tmp_out.push(tmp_inner); } tmp_out.into_iter() } } fn main(){ let a1 = Unit::INT(1_i32); let a2 = Unit::FLOAT(2.2_f32); let a3 = Unit::STR("abc".to_string()); let peo1 = People{ name: "Tina".to_string(), elements: vec![a1, a2] }; let peo2 = People{ name: "Bob".to_string(), elements: vec![a3] }; let f = Family{ name: "Ahome".to_string(), peoples: vec![peo1, peo2] }; for each in f{ println!("{:?}", each); }
//let x:Vec<Unit> = f.into_iter().flatten().collect();
// println!("{:?}", x);
}