MST

星途 面试题库

面试题:Rust 数字范围在迭代器与集合操作中的应用

假设你有一个 `Vec<i32>` 类型的集合,现在你想从中筛选出一个子集合,子集合中的元素范围在 `10` 到 `20`(包含边界)之间,使用 Rust 的迭代器方法和数字范围界定相关知识来实现这个功能,并且要考虑代码的性能和可读性。
47.5万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
fn main() {
    let numbers: Vec<i32> = vec![5, 15, 25, 12, 18];
    let filtered: Vec<i32> = numbers.iter()
                                   .cloned()
                                   .filter(|&num| num >= 10 && num <= 20)
                                   .collect();
    println!("{:?}", filtered);
}

解释:

  1. numbers.iter():将 Vec<i32> 转成迭代器。
  2. .cloned():由于 iter() 返回的迭代器元素类型是 &i32cloned() 方法将其克隆成 i32 类型,这样后续 filter 处理的就是 i32 类型的值。
  3. .filter(|&num| num >= 10 && num <= 20):过滤出 1020(包含边界)之间的元素。
  4. .collect():将过滤后的结果收集到一个新的 Vec<i32> 中。