模式匹配解析浮点错误

Cab*_*ero 2 rust

我有这个:

struct Test {
    amount: f32
}

fn main() {

    let amnt: String = "9.95".to_string();
    let test = Test {
        amount: match amnt.parse() {
            Ok(num) => num.unwrap(),
            Err(e) => 0f32
        }
    };

}
Run Code Online (Sandbox Code Playgroud)

它导致错误:

error: the type of this value must be known in this context
       Ok(num) => num.unwrap(),
                  ^~~~~~~~~~~~
Run Code Online (Sandbox Code Playgroud)

如何强制num修复此错误?

Dog*_*ert 7

因为你已经进行了模式匹配Ok(),所以你不需要打电话unwrap(); num已经是类型了f32.

编译好:

struct Test {
    amount: f32
}

fn main() {

    let amnt: String = "9.95".to_string();
    let test = Test {
        amount: match amnt.parse() {
            Ok(num) => num,
            Err(e) => 0f32
        }
    };

}
Run Code Online (Sandbox Code Playgroud)

您也可以使用Result::unwrap_or():

Test {
   amount: amnt.parse().unwrap_or(0.0)
}
Run Code Online (Sandbox Code Playgroud)