Sto cercando di analizzare una stringa in un elenco di valori in virgola mobile in Rust. Presumo che ci sia un modo intelligente per farlo usando gli iteratori e Option
s; tuttavia, non riesco a far sì che ignori i valori Err
risultanti da chiamate parse() non riuscite. Il tutorial di Rust non sembra coprire esempi come questo, e la documentazione è confusa al meglio.Come analizzare una stringa in un elenco di oggetti mobili utilizzando lo stile funzionale?
Come procedere per l'implementazione utilizzando le operazioni vettore/elenco di stile funzionale? Sarebbero apprezzati anche i puntatori su un migliore stile di ruggine per la mia implementazione iterativa!
"funzionale" in stile
Panics quando incontra un Err
input.split(" ").map(|s| s.parse::<f32>().unwrap()).collect::<Vec<_>>()
iterativo stile
ignora i valori non float come inteso
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);
}
}