Como escrever uma função em Rust que aceita um iterador?
Olá a todos! Sou novo em Rust e estou tentando escrever uma função que possa processar uma sequência de números de diferentes fontes: de um vetor, de um intervalo, de um arquivo, etc. Em outras linguagens, eu simplesmente passaria um array ou lista, mas em Rust, pelo que entendi, é comum usar iteradores.
O problema é que não entendo como declarar corretamente o tipo do parâmetro. Tentei escrever 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()));
}
```
Mas o compilador reclama: "error[E0277]: the size for values of type `dyn Iterator
- ` cannot be known at compilation time". Entendo que isso tem a ver com traits e tamanhos na pilha, mas não sei como corrigir.
Preciso que a função funcione com diferentes tipos de iteradores: `std::vec::IntoIter`, `std::ops::Range`, `std::iter::Map`, etc. Como especificar corretamente o tipo do parâmetro?