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?