Próbuję parsować ciąg znaków na liście wartości zmiennoprzecinkowych w Rust. Zakładam, że jest to sprytny sposób na to, używając iteratorów i Option
s; jednak nie mogę go zignorować wartości Err
, które wynikają z nieudanych połączeń analizatora składni(). Samouczek Rusta nie obejmuje żadnych przykładów takich jak ten, a dokumentacja jest w najlepszym wypadku myląca.Jak przeanalizować ciąg znaków do listy elementów pływających za pomocą stylu funkcjonalnego?
W jaki sposób chciałbym wdrożyć tę operację za pomocą operacji wektorów/list w stylu funkcjonalnym? Potrzebne będą również wskazówki dotyczące lepszego stylu Rustu dla mojej iteracyjnej implementacji!
"Functional" -Style
alarm napadowy po napotkaniu Err
input.split(" ").map(|s| s.parse::<f32>().unwrap()).collect::<Vec<_>>()
iteracyjny stylu
Ignoruje wartości non obrocie jako przeznaczone
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);
}
}