Comment retourner correctement un itérateur (ou tout autre trait) depuis une fonction en Rust ?
Bonjour, collègues ! J'ai commencé à apprendre Rust et j'ai rencontré un problème qui me semble très étrange. J'essaie d'écrire une fonction qui retourne un itérateur, mais le compilateur ne cesse de râler.
Voici ce que je veux faire : j'ai un vecteur de nombres, et je veux filtrer les nombres pairs et retourner un itérateur sur ceux-ci. J'ai écrit ce code :
```rust
fn get_even_numbers(numbers: Vec) -> Iterator- {
numbers.into_iter().filter(|&x| x % 2 == 0)
}
```
Mais le compilateur donne cette erreur :
```
error[E0277]: the size for values of type `(dyn Iterator
- + 'static)` cannot be known at compilation time
```
Je comprends que les traits ne sont pas des types de taille fixe, mais comment retourner correctement un itérateur ? J'ai vu que dans certains endroits on utilise `Box
>`, mais cela ressemble à une béquille. Peut-être existe-t-il une manière plus idiomatique ?
Je m'intéresse aussi à la façon de gérer d'autres traits, par exemple si je veux retourner un `Display` ou un `Clone`. Y a-t-il
No answers yet.
Connectez-vous pour laisser une réponse