Avatar ·

Rust中iter()和into_iter()有什么区别?

大家好!我开始学习Rust,在处理迭代器时遇到了困惑。在文档中,我看到集合(例如Vec)有iter()和into_iter()方法。乍一看它们做的是同一件事——允许遍历元素。但我注意到,使用into_iter()后,原始向量不再可用,而使用iter()后,它仍然可用。为什么会这样? 以下是我感到困惑的示例代码: ```rust fn main() { let numbers = vec![1, 2, 3]; // 使用 iter() for num in numbers.iter() { println!("{}", num); } println!("iter()后的向量: {:?}", numbers); // 正常工作! // 使用 into_iter() let numbers2 = vec![4, 5, 6]; for num in numbers2.into_iter() { println!("{}", num); } // println!("into_iter()后的向量: {:?}", numbers2); // 错误!numbers2已被移动 } ``` 我明白into_iter()以某种方式“获取”了所有权,而iter()没有。但什么时候该用哪个方法?还有,如果...