渐进式编程课
Rust 目录
第 18 课2026.09.22

从借用的分数切片中找到第一个目标值,同时保留“找不到”的情况。

第 18 课:查找切片中的目标值

  • 日期:2026-09-22
  • 课程序号:第 18 课
  • 知识点:Iterator::find

用途或适用场景

从借用的分数切片中找到第一个目标值,同时保留“找不到”的情况。

核心概念

find 遇到第一个满足条件的元素就返回 Some,否则返回 None;沿用之前的 copied(),让结果仍是 Option<i32>。

最小代码或操作示例

rust
fn first_value(values: &[i32], target: i32) -> Option<i32> {
    values.iter().copied().find(|value| *value == target)
}

fn main() {
    let scores = [3, 8, 5];
    assert_eq!(first_value(&scores, 8), Some(8));
    assert_eq!(first_value(&scores, 9), None);
}

3~5 分钟练习

在 scores 末尾再加一个 8,确认结果仍是 Some(8)。

参考答案

把数组改为 [3, 8, 5, 8] 后,两个断言仍成立;find 在首个匹配处停止。

与上一课的联系

沿用第 17 课的整数切片和 Option 的有值/无值处理,并复用第 16 课的 copied();本课只新增 find 获取匹配的值;下一课可在同一切片中寻找匹配项的位置。

时效校验

时效校验:2026-09-24(已打开 Rust 1.98.1 标准库 Iterator::find 文档,核对签名、返回值和首次匹配语义;未见废弃标记)。

官方参考