Cómo devolver correctamente un iterador (o cualquier otro trait) desde una función en Rust
¡Hola, colegas! Empecé a estudiar Rust y me encontré con un problema que me parece muy extraño. Estoy intentando escribir una función que devuelva un iterador, pero el compilador se queja constantemente.
Esto es lo que quiero hacer: tengo un vector de números y quiero filtrar los números pares y devolver un iterador sobre ellos. Escribí este código:
```rust
fn get_even_numbers(numbers: Vec) -> Iterator- {
numbers.into_iter().filter(|&x| x % 2 == 0)
}
```
Pero el compilador da el siguiente error:
```
error[E0277]: the size for values of type `(dyn Iterator
- + 'static)` cannot be known at compilation time
```
Entiendo que los traits no son tipos de tamaño fijo, pero ¿cómo se debe devolver un iterador correctamente? He visto que en algunos lugares se usa `Box
>`, pero parece un parche. ¿Quizás hay una forma más idiomática?
También me interesa saber cómo manejar otros traits, por ejemplo, si quiero devolver algún `Display` o `Clone`.