Avatar ·

Cómo escribir una función en Rust que acepte un iterador

¡Hola a todos! Soy nuevo en Rust y estoy intentando escribir una función que pueda procesar una secuencia de números de diferentes fuentes: desde un vector, desde un rango, desde un archivo, etc. En otros lenguajes simplemente pasaba un array o una lista, pero en Rust, según tengo entendido, se usan iteradores. El problema es que no entiendo cómo declarar correctamente el tipo del parámetro. Intenté escribir algo como: ```rust fn sum_squares(items: Iterator) -> i32 { items.map(|x| x * x).sum() } fn main() { let vec = vec![1, 2, 3, 4, 5]; println!("{}", sum_squares(vec.iter())); } ``` Pero el compilador se queja: "error[E0277]: the size for values of type `dyn Iterator` cannot be known at compilation time". Entiendo que esto está relacionado con los traits y los tamaños en la pila, pero no sé cómo solucionarlo. Necesito que la función funcione con diferentes tipos de iteradores: `std::vec::IntoIter`, `std::ops::Range`, `std::iter::Map`, etc. ¿Cómo especificar correctamente el tipo del parámetro?