Avatar ·

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