Avatar ·

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?