Ich versuche, eine Zeichenfolge in eine Liste von Fließkommawerten in Rust zu analysieren. Ich würde annehmen, dass es einen cleveren Weg gibt, dies mit Iteratoren und Option
s zu tun; Ich kann jedoch nicht die Err
Werte ignorieren, die aus fehlgeschlagenen parse() - Aufrufen resultieren. Das Rust-Tutorial scheint keine derartigen Beispiele zu enthalten, und die Dokumentation ist bestenfalls verwirrend.Wie analysiere ich eine Zeichenfolge in eine Liste von Schwimmern mit funktionalen Stil?
Wie würde ich über die Implementierung der funktionalen Vektor/Liste-Operationen gehen? Pointer auf besseren Rust-Stil für meine iterative Implementierung würden ebenfalls geschätzt werden!
"Functional" -Stil
gerät in Panik, wenn er trifft eine Err
input.split(" ").map(|s| s.parse::<f32>().unwrap()).collect::<Vec<_>>()
Iterative-Stil
Ignoriert Nicht-Float-Werte wie beabsichtigt
fn parse_string(input: &str) -> Vec<f32> {
let mut vals = Vec::new();
for val in input.split_whitespace() {
match val.parse() {
Ok(v) => vals.push(v),
Err(_) =>(),
}
}
vals
}
fn main() {
let params = parse_string("1 -5.2 3.8 abc");
for ¶m in params.iter() {
println!("{:.2}", param);
}
}