0024-Rust-自实现迭代器

环境

  • Time 2022-05-21
  • Rust 1.61.0

前言

说明

参考:https://doc.rust-lang.org/std/iter/index.html

目标

有时候自定义的 struct 较复杂,需要单独创建另一个结构体来实现迭代器。

自定义类型

struct MyData {
    value1: usize,
    value2: usize,
    value3: usize,
    value4: usize,
}

Default

impl Default for MyData {
    fn default() -> Self {
        Self {
            value1: 88,
            value2: 44,
            value3: 66,
            value4: 22,
        }
    }
}

实现迭代器

#[derive(Debug)]
struct MyIterator(Vec<usize>);

impl Iterator for MyIterator {
    type Item = usize;

    fn next(&mut self) -> Option<Self::Item> {
        self.0.pop()
    }
}

生成迭代器

impl MyData {
    fn to_my_iterator(self) -> MyIterator {
        let vec = vec![self.value4, self.value3, self.value2, self.value1];
        MyIterator(vec)
    }
}

使用迭代器

fn main() {
    let mut iter = MyData::default().to_my_iterator();
    while let Some(value) = iter.next() {
        println!("value: {value:?}")
    }
    println!("{iter:?}")
}

总结

针对自定义类型,不太好直接实现迭代器,新增了另一个结构体来实现迭代器。

附录

posted @   jiangbo4444  阅读(49)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示