Avatar ·

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`.