rust iter3ok.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | #[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); }<br> } |
//let x:Vec<Unit> = f.into_iter().flatten().collect();
// println!("{:?}", x);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下