Rust 迭代器

举报
福州司马懿 发表于 2025/03/17 11:30:22 2025/03/17
【摘要】 Rust 中的迭代器是一种强大的工具,用于序列处理。它们提供了一种简洁而高效的方式来遍历集合,如数组、向量、哈希表等。Rust 的迭代器是惰性的,这意味着它们不会立即执行,而是等到被消费时才进行实际操作。这种特性让迭代器非常灵活且内存高效。 创建迭代器在 Rust 中,你可以通过多种方式创建迭代器。以下是一些常见的方法:从集合中创建:数组或向量:调用 .iter() 方法。let v = v...

Rust 中的迭代器是一种强大的工具,用于序列处理。它们提供了一种简洁而高效的方式来遍历集合,如数组、向量、哈希表等。Rust 的迭代器是惰性的,这意味着它们不会立即执行,而是等到被消费时才进行实际操作。这种特性让迭代器非常灵活且内存高效。

创建迭代器

在 Rust 中,你可以通过多种方式创建迭代器。以下是一些常见的方法:

  1. 从集合中创建

    • 数组或向量:调用 .iter() 方法。
    let v = vec![1, 2, 3];
    let iter = v.iter();
    
  2. 范围迭代器

    • 使用标准库提供的范围宏。
    let range_iter = 0..5;  // 不包括 5
    let range_iter_inclusive = 0..=5; // 包括 5
    
  3. 重复迭代器

    • 使用 repeat 方法创建一个无限重复特定值的迭代器。
    let mut repeat_iter = std::iter::repeat(10);
    

迭代器适配器

迭代器适配器允许你改变迭代器的行为。以下是一些常用的适配器:

  1. map

    • 用于将每个元素映射为另一个值。
    let v = vec![1, 2, 3];
    let mapped_iter = v.iter().map(|&x| x * 2);
    
  2. filter

    • 用于筛选符合条件的元素。
    let v = vec![1, 2, 3, 4];
    let filtered_iter = v.into_iter().filter(|&x| x % 2 == 0);
    
  3. fold

    • 用于将迭代器中的元素折叠为一个值。
    let v = vec![1, 2, 3];
    let sum = v.into_iter().fold(0, |acc, x| acc + x);
    
  4. collect

    • 将迭代器转换为一个集合。
    let v = vec![1, 2, 3];
    let collected_vec: Vec<i32> = v.into_iter().map(|x| x * 2).collect();
    

消费迭代器

迭代器需要被消费才能实际执行。消费迭代器的方法包括:

  • for 循环

    let v = vec![1, 2, 3];
    for x in v.iter() {
        println!("{}", x);
    }
    
  • next 方法

    • 手动调用 next 来逐个获取元素。
    let mut iter = vec![1, 2, 3].into_iter();
    while let Some(x) = iter.next() {
        println!("{}", x);
    }
    

总结

Rust 的迭代器提供了一种功能强大且灵活的方式来处理序列数据。通过惰性求值和丰富的适配器,迭代器让数据处理变得更加高效和简洁。理解和熟练使用迭代器是成为 Rust 开发者的重要一步。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。