Como aplicar uma função a cada elemento de um vetor em Rust (análogo ao map)?
Olá, colegas! Comecei a estudar Rust recentemente, vim do Python, e tive um problema com processamento de vetores.
Em Python, eu costumava fazer assim:
```python
numbers = [1, 2, 3, 4]
squared = list(map(lambda x: x**2, numbers)) # [1, 4, 9, 16]
```
Ou com list comprehension, que é ainda mais conveniente.
Em Rust, escrevi um código mais ou menos assim:
```rust
fn main() {
let numbers = vec![1, 2, 3, 4];
// Quero obter um novo vetor com os quadrados dos números
let squared: Vec = numbers.map(|x| x * x).collect();
println!("{:?}", squared);
}
```
O compilador dá um erro:
```
error[E0599]: no method named `map` found for struct `Vec` in the current scope
```
Entendo que Rust não é Python, e aqui tudo é mais rigoroso com tipos. Mas como então processar cada elemento de um vetor? Ouvi falar sobre iteradores, mas não entendo completamente como usá-los. Por favor, me digam como aplicar corretamente uma função a cada elemento para obter um novo vetor? Preciso de um exemplo.