|
|
@ -102,13 +102,16 @@ for 元素 in 集合 {
|
|
|
|
```
|
|
|
|
```
|
|
|
|
这个语法跟 JavaScript 还蛮像,应该挺好理解。
|
|
|
|
这个语法跟 JavaScript 还蛮像,应该挺好理解。
|
|
|
|
|
|
|
|
|
|
|
|
注意,使用 `for` 时我们往往使用集合的引用形式,除非你不想在后面的代码中继续使用该集合(比如我们这里使用了 `container` 的引用)。如果不使用引用的话,所有权会被转移到 `for` 语句块中,后面就无法再使用这个集合了):
|
|
|
|
注意,使用 `for` 时我们往往使用集合的引用形式,除非你不想在后面的代码中继续使用该集合(比如我们这里使用了 `container` 的引用)。如果不使用引用的话,所有权会被转移(move)到 `for` 语句块中,后面就无法再使用这个集合了):
|
|
|
|
```rust
|
|
|
|
```rust
|
|
|
|
for item in &container {
|
|
|
|
for item in &container {
|
|
|
|
// ...
|
|
|
|
// ...
|
|
|
|
}
|
|
|
|
}
|
|
|
|
```
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
> 对于实现了 `copy` 特征的数组(例如 [i32; 10] )而言, `for item in arr` 并不会把 `arr` 转移,而是直接对其进行了拷贝,因此循环之后仍然可以使用 `arr` 。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
如果想在循环中,**修改该元素**,可以使用 `mut` 关键字:
|
|
|
|
如果想在循环中,**修改该元素**,可以使用 `mut` 关键字:
|
|
|
|
```rust
|
|
|
|
```rust
|
|
|
|
for item in &mut collection {
|
|
|
|
for item in &mut collection {
|
|
|
|