相关疑难解决方法(0)

如何使用函数样式将字符串解析为浮点数列表?

我试图将一个字符串解析为Rust中的浮点值列表.我认为有一种聪明的方法可以使用迭代器和Options 来做到这一点; 但是,我无法忽略Errparse()调用失败导致的值.Rust教程似乎没有涵盖任何这样的例子,文档充其量也令人困惑.

我将如何使用功能样式的矢量/列表操作来实现它?对于我的迭代实现更好的Rust风格的指针也将受到赞赏!

"功能性"风格

遇到麻烦时会发生恐慌 Err

input.split(" ").map(|s| s.parse::<f32>().unwrap()).collect::<Vec<_>>()
Run Code Online (Sandbox Code Playgroud)

迭代式

按预期忽略非浮点值

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 &param in params.iter() {
        println!("{:.2}", param);
    }
}
Run Code Online (Sandbox Code Playgroud)

functional-programming rust

8
推荐指数
1
解决办法
4029
查看次数

如果可以失败,从stdin读取几个整数的最简单方法是什么?

假设我期望一个来自stdin的3个整数的行.阅读和解析它们最简单的方法是什么?什么是a, b, c = map(int, input().split())在Python或scanf("%d %d %d", &a, &b, &c);C中的Rust等价物?

我提出的最好方法是:

let mut line = String::new();
io::stdin().read_line(&mut line).unwrap();
let parts: Vec<&str> = line.split_whitespace().collect();
let a: i32 = parts[0].parse().unwrap();
let b: i32 = parts[1].parse().unwrap();
let c: i32 = parts[2].parse().unwrap();
Run Code Online (Sandbox Code Playgroud)

有更简单的方法吗?

rust

8
推荐指数
2
解决办法
670
查看次数

标签 统计

rust ×2

functional-programming ×1