Avatar ·

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.