Wie man eine Iteration unterbricht und einen Fehler zurückgibt, wenn Iterator::map Result::Err zurückgibt
Hallo Kollegen! Ich bin neu in Rust und habe ein Problem bei der Arbeit mit Iteratoren und der Fehlerbehandlung. Ich habe einen Vektor von Strings, die in Zahlen geparst werden müssen. Ich verwende `Iterator::map` mit `str::parse::()`, das `Result` zurückgibt. Wenn das Parsen fehlschlägt, möchte ich die Iteration sofort abbrechen und den Fehler aus der Funktion zurückgeben, anstatt die restlichen Elemente weiterzuverarbeiten.
Hier ist, was ich versuche:
```rust
use std::num::ParseIntError;
fn parse_numbers(input: &[&str]) -> Result, ParseIntError> {
input.iter()
.map(|s| s.parse::())
.collect()
}
```
Dieser Code funktioniert, aber er sammelt alle Ergebnisse in `Result, ParseIntError>`. Wenn ein String nicht geparst werden kann, wird der Fehler zwar zurückgegeben, aber ich vermute, dass `collect` alle Elemente verarbeitet, selbst wenn eines davon `Err` ist. Ich brauche, dass die Iteration beim ersten Fehler abbricht und der Fehler sofort zurückgegeben wird, ohne die restlichen Strings zu verarbeiten.
Wie macht man das richtig?
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen