MST

星途 面试题库

面试题:Rust中使用迭代器对集合进行基本转换

给定一个包含整数的`Vec<i32>`,使用Rust迭代器将其转换为一个新的`Vec`,其中每个元素是原元素的平方。请写出完整代码,并解释迭代器方法的执行逻辑。
19.3万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
fn main() {
    let numbers: Vec<i32> = vec![1, 2, 3, 4, 5];
    let squared_numbers: Vec<i32> = numbers.iter()
                                         .map(|&num| num * num)
                                         .collect();
    println!("{:?}", squared_numbers);
}

迭代器方法执行逻辑解释

  1. iter(): 调用numbers.iter()方法将Vec<i32>转换为一个迭代器。这个迭代器可以按顺序逐个产生Vec中的元素。这里产生的迭代器元素类型是&i32,因为iter()方法返回的是一个不可变借用的迭代器。
  2. map(|&num| num * num): map方法会对迭代器中的每个元素应用一个闭包。这里闭包|&num| num * num接受一个i32类型的元素(因为使用了&解引用模式,将&i32转换为i32),并返回该元素的平方。map方法返回一个新的迭代器,这个新迭代器中的元素是应用闭包后的结果,类型为i32
  3. collect(): collect方法用于将迭代器收集成一个集合。在这里,它将经过map处理后的迭代器收集成一个新的Vec<i32>,即平方后的数字组成的向量