面试题答案
一键面试fn main() {
let numbers: Vec<i32> = (0..10000).map(|_| rand::random::<i32>()).collect();
let result: Vec<i32> = numbers.iter()
.filter(|&&num| num > 100 && num % 3 == 0)
.map(|&num| num * num)
.collect();
println!("{:?}", result);
}
选择filter
和map
方法是因为它们采用了链式调用的方式,能够以声明式的风格表达复杂的迭代逻辑,提高代码的可读性。从性能角度看,这两个方法都是惰性求值的,只有在调用collect
时才会真正执行迭代操作,减少了不必要的中间数据存储,提高了效率。相比于传统的for
循环手动迭代,链式调用迭代器方法的代码更简洁且性能更优,在处理大数据集时优势明显。