Menu
CoddyTech

可变迭代

本课属于 Coddy Rust 学习旅程的“逻辑与流程”单元。第 12 课,共 66 课。

有时,你需要做的不只是读取向量元素,还需要修改它们。上一课介绍了如何遍历并读取值,而本课将教你如何在遍历过程中使用可变引用来修改元素。

要在遍历时修改元素,你需要在 for 循环中使用 &mut,而不是 &:

let mut numbers = vec![1, 2, 3, 4];

for number in &mut numbers {
    *number = *number * 2;
}

&mut numbers 会创建一个指向该向量的可变引用,每次迭代都会为你提供一个指向单个元素的可变引用。* 运算符(称为解引用运算符)用于访问和修改引用所指向的实际值。

这种模式对于就地转换数据非常有用。你无需创建一个包含修改后值的新向量,就能高效地更新现有向量。要实现这一点,必须将向量声明为 mut,因为你要更改它的内容。

执行上面的循环后,numbers 中会包含 [2, 4, 6, 8],每个原始值都在原位置翻倍。

challenge icon

挑战

简单
编写一个函数 add_ten_to_all,它接收一个可变向量 numbers,并将每个元素原地加上 10,然后返回修改后的向量。

使用带有 &mut 的可变迭代,直接修改每个元素。记得使用解引用运算符 * 来访问并修改实际值。

参数:

  • numbers(Vec<i32>):要修改的整数可变向量

返回值:每个元素都加上 10 后的修改向量(Vec<i32>)

亲手试试

fn add_ten_to_all(mut numbers: Vec<i32>) -> Vec<i32> {
    // 在这里编写代码
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: Rust 在线编译器