Como retornar corretamente um iterador (ou qualquer outra trait) de uma função em Rust?
Olá, colegas! Comecei a estudar Rust e me deparei com um problema que me parece muito estranho. Estou tentando escrever uma função que retorna um iterador, mas o compilador reclama constantemente.
Aqui está o que quero fazer: tenho um vetor de números e quero filtrar os números pares e retornar um iterador sobre eles. Escrevi este código:
```rust
fn get_even_numbers(numbers: Vec) -> Iterator- {
numbers.into_iter().filter(|&x| x % 2 == 0)
}
```
Mas o compilador dá o erro:
```
error[E0277]: the size for values of type `(dyn Iterator
- + 'static)` cannot be known at compilation time
```
Entendo que traits não são tipos com tamanho fixo, mas como então retornar um iterador corretamente? Vi que em alguns lugares se usa `Box
>`, mas isso parece um hack. Talvez exista uma forma mais idiomática?
Também estou interessado em como lidar com outras traits, por exemplo, se quero retornar algum `Display` ou `Clone`. Existe