面试题答案
一键面试使用for
循环迭代
fn main() {
let arr = [1, 2, 3, 4, 5];
for num in &arr {
let square = num * num;
println!("{}", square);
}
}
使用iter
方法迭代
fn main() {
let arr = [1, 2, 3, 4, 5];
arr.iter().for_each(|num| {
let square = num * num;
println!("{}", square);
});
}
原理区别
for
循环:for
循环是Rust中的语法糖,在编译时会被展开为while let
循环。它直接在集合上进行迭代,通常会消耗集合所有权(除非使用引用)。它按照集合的存储顺序直接访问元素,适用于简单的迭代场景。iter
方法:iter
方法返回一个实现了Iterator
trait的迭代器对象。迭代器提供了一种更灵活、功能更丰富的迭代方式,如链式调用各种适配器方法(如map
、filter
等)。迭代器在迭代过程中不会消耗集合的所有权,而是通过next
方法逐个生成元素,允许更复杂的迭代逻辑。