Qual é a diferença entre iter() e into_iter() em Rust?
Olá, colegas! Comecei a estudar Rust e me deparei com confusão ao trabalhar com iteradores. Na documentação, vejo que as coleções (por exemplo, Vec) têm métodos iter() e into_iter(). À primeira vista, eles fazem a mesma coisa — permitem iterar sobre os elementos. Mas notei que, após usar into_iter(), o vetor original não está mais disponível, enquanto após iter(), ele permanece disponível. Por que isso?
Aqui está um exemplo de código que me confunde:
```rust
fn main() {
let numbers = vec![1, 2, 3];
// Usando iter()
for num in numbers.iter() {
println!("{}", num);
}
println!("Vetor após iter(): {:?}", numbers); // Funciona!
// Usando into_iter()
let numbers2 = vec![4, 5, 6];
for num in numbers2.into_iter() {
println!("{}", num);
}
// println!("Vetor após into_iter(): {:?}", numbers2); // Erro! numbers2 foi movido
}
```
Eu entendo que into_iter() de alguma forma "toma posse", enquanto iter() não. Mas quando usar cada método? E se