在学习 Rust语言基础 的过程中,Rust迭代器 是一个核心且强大的概念。无论你是刚接触编程的新手,还是从其他语言转来的开发者,理解迭代器将极大提升你编写高效、安全代码的能力。本教程将用通俗易懂的方式带你入门 Rust编程入门 中的迭代器,并揭示其背后的 迭代器模式 原理。
简单来说,迭代器是一种可以“逐个访问”集合中元素的对象。在Rust中,几乎所有集合类型(如 Vec、数组、HashMap 等)都支持通过迭代器来遍历。
在Rust中,最常用的方法是调用 .iter() 来获取一个不可变引用的迭代器:
let numbers = vec![1, 2, 3, 4, 5];for num in numbers.iter() { println!("{}", num);} 这段代码会依次打印出 1 到 5。注意:.iter() 返回的是对每个元素的引用(&i32),而不是值本身。
Rust提供了三种主要的迭代方式:
.iter():产生 &T 类型的引用,不消耗原集合。.iter_mut():产生 &mut T 类型的可变引用,允许修改元素。.into_iter():消耗(move)原集合,产生 T 类型的值。let mut vec = vec![10, 20, 30];// .iter():只读for x in vec.iter() { println!("Read: {}", x);}// .iter_mut():可修改for x in vec.iter_mut() { *x *= 2; // 每个元素乘以2}// .into_iter():消耗vec,之后vec不能再用for x in vec.into_iter() { println!("Owned: {}", x);}// 此时 vec 已被移动,无法再访问 Rust的迭代器是惰性的——这意味着仅仅创建迭代器并不会执行任何操作。只有当你调用像 .collect()、.for_each() 或在 for 循环中使用它时,迭代才会真正发生。
let numbers = vec![1, 2, 3, 4, 5];// 创建迭代器但不执行let doubled = numbers.iter().map(|x| x * 2);// 此时 doubled 只是一个“计划”,没有实际计算// 调用 collect() 才真正执行let result: Vec = doubled.collect();println!("{:?}", result); // 输出 [2, 4, 6, 8, 10] Rust提供了丰富的迭代器适配器,让你能链式组合操作:
.map():对每个元素进行转换.filter():筛选满足条件的元素.take(n):取前 n 个元素.skip(n):跳过前 n 个元素let numbers = vec![1, 2, 3, 4, 5, 6, 7, 8];let result: Vec = numbers .into_iter() .filter(|&x| x % 2 == 0) // 保留偶数 .map(|x| x * x) // 平方 .collect();println!("{:?}", result); // 输出 [4, 16, 36, 64] 使用 Rust迭代器 有三大优势:
通过本教程,你应该已经掌握了 Rust语言基础 中关于迭代器的核心知识。无论是 Rust编程入门 还是进阶开发,熟练运用 迭代器模式 都将让你写出更优雅、高效的代码。记住:在Rust中,“能用迭代器就别用手写循环”!
继续练习吧!尝试用迭代器重写你之前的循环代码,你会发现Rust的美。
本文由主机测评网于2025-12-10发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025125666.html