iter() 和 into_iter() 在 Rust 中有什么区别?
你好!我刚开始学习 Rust,正在尝试理解迭代器。我读了几篇文章,但还是不明白 `iter()` 和 `into_iter()` 方法之间的区别。
我写了这样的代码:
```rust
let numbers = vec![1, 2, 3, 4, 5];
// 尝试 1: iter()
for num in numbers.iter() {
println!("{}", num);
}
println!("After iter(): {:?}", numbers); // 正常工作
// 尝试 2: into_iter()
for num in numbers.into_iter() {
println!("{}", num);
}
println!("After into_iter(): {:?}", numbers); // 报错!
```
第一部分代码运行正常,我可以在循环后使用 `numbers`。但第二部分会报编译错误:`value used here after move`。
我读到 `into_iter()` 会消费集合,但我不明白这在实践中意味着什么。为什么我不能在 `into_iter()` 之后使用向量?以及在什么情况下应该使用这些方法?
另外,我还听说过 `iter_mut()` 方法,但还没有弄明白。希望能得到详细解释。