Avatar ·

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()` 方法,但还没有弄明白。希望能得到详细解释。