Avatar ·

Comment écrire une fonction en Rust qui accepte un itérateur ?

Bonjour à tous ! Je suis débutant en Rust et j'essaie d'écrire une fonction qui pourrait traiter une séquence de nombres provenant de différentes sources : d'un vecteur, d'une plage, d'un fichier, etc. Dans d'autres langages, je passerais simplement un tableau ou une liste, mais en Rust, comme je l'ai compris, on utilise généralement des itérateurs. Le problème est que je ne comprends pas comment déclarer correctement le type du paramètre. J'ai essayé d'écrire quelque chose comme : ```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())); } ``` Mais le compilateur se plaint : "error[E0277]: the size for values of type `dyn Iterator` cannot be known at compilation time". Je comprends que cela a un rapport avec les traits et les tailles sur la pile, mais je ne sais pas comment le corriger. J'ai besoin que la fonction fonctionne avec différents types d'itérateurs : `std::vec::IntoIter`, `std::ops::Range`, `std::iter::Map`, etc. Comment spécifier correctement le type de paramètre ?