Qual é a diferença entre iter() e into_iter() em Rust?
Olá! Acabei de começar a aprender Rust e estou tentando entender os iteradores. Li vários artigos, mas não consigo entender a diferença entre os métodos `iter()` e `into_iter()`.
Escrevi este código:
```rust
let numbers = vec![1, 2, 3, 4, 5];
// Tentativa 1: iter()
for num in numbers.iter() {
println!("{}", num);
}
println!("Depois de iter(): {:?}", numbers); // Funciona
// Tentativa 2: into_iter()
for num in numbers.into_iter() {
println!("{}", num);
}
println!("Depois de into_iter(): {:?}", numbers); // Erro!
```
A primeira parte do código funciona normalmente, posso usar `numbers` após o loop. Mas a segunda parte gera um erro de compilação: `value used here after move`.
Li que `into_iter()` consome a coleção, mas não entendo o que isso significa na prática. Por que não posso usar o vetor após `into_iter()`? E em quais situações devo aplicar cada um desses métodos?
Também ouvi falar do método `iter_mut()`, mas ainda não o entendi. Ficarei grato por uma explicação detalhada.
No answers yet.
Faça login para deixar uma resposta