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);

  

posted @   CrossPython  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示