Avatar ·

Comment interrompre l'itération et retourner une erreur si Iterator::map retourne Result::Err ?

Bonjour collègues ! Je suis novice en Rust et j'ai rencontré un problème en travaillant avec les itérateurs et la gestion des erreurs. J'ai un vecteur de chaînes que je dois analyser en nombres. J'utilise `Iterator::map` avec `str::parse::()`, qui retourne `Result`. Si l'analyse échoue, je veux immédiatement arrêter l'itération et retourner l'erreur depuis la fonction, sans continuer à traiter les éléments restants. Voici ce que j'essaie : ```rust use std::num::ParseIntError; fn parse_numbers(input: &[&str]) -> Result, ParseIntError> { input.iter() .map(|s| s.parse::()) .collect() } ``` Ce code fonctionne, mais il collecte tous les résultats dans `Result, ParseIntError>`. Si une chaîne ne s'analyse pas, l'erreur est quand même retournée, mais je soupçonne que `collect` traite tous les éléments, même si l'un d'eux est `Err`. J'ai besoin que dès la première erreur, l'itération soit interrompue et que l'erreur soit retournée immédiatement, sans traiter les autres chaînes. Comment faire correctement ?