模式匹配解析浮点错误

时间:2015-05-28 09:10:46

标签: 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
        }
    };

}

并且导致错误:

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

如何投射num来修复此错误?

1 个答案:

答案 0 :(得分: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
        }
    };

}

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

Test {
   amount: amnt.parse().unwrap_or(0.0)
}