渐进式编程课
Rust 目录
第 20 课2026.09.24

分数切片里同一分数出现多次时,定位最后一次出现的位置。

第 20 课:查找最后一次匹配位置

  • 日期:2026-09-24
  • 课程序号:第 20 课
  • 知识点:Iterator::rposition

用途或适用场景

分数切片里同一分数出现多次时,定位最后一次出现的位置。

核心概念

对新的双向、定长迭代器调用 rposition,会从尾部寻找匹配项,但返回的仍是从切片开头计数的索引或 None。

最小代码或操作示例

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

fn main() {
    let scores = [3, 8, 5, 8];
    assert_eq!(first_position(&scores, 8), Some(1));
    assert_eq!(scores.iter().rposition(|value| *value == 8), Some(3));
}

3~5 分钟练习

再把一个 8 加到数组开头,分别断言第一个和最后一个 8 的位置。

参考答案

数组改为 [8, 3, 8, 5, 8] 后,first_position(&scores, 8) 是 Some(0),rposition 是 Some(4)。

与上一课的联系

沿用第 19 课的 first_position、scores 和目标分数;本课只新增 rposition 对照首次与末次匹配;下一课可利用这些索引读取对应的切片元素。

时效校验

时效校验:2026-09-24(已打开 Rust 1.98.1 标准库 Iterator::rposition 文档,核对签名及切片迭代器约束;未见废弃标记)。

官方参考