我有这个:
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
来修复此错误?
答案 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)
}