我正在做一个系统,让两个数字相除,如果第二个数字不存在,它就选择第一个数字。下面是代码。
let new_num: f32 = match num1/num2 {
Ok(num) => num,
Err(error) => num1,
};
然而,它返回。Error: Mismatched types. Expected f32, found std::result::Result
为什么会出现这种情况,我该如何解决?
表达式 num1/num2
是一个算术除法。给定类型 f32
对于两个变量 num1
和 num2
,该表达式的结果类型为 f32
而不是 Result
.
例子。
let num1: f32 = 2.0;
let num2: f32 = 3.0;
let new_num: f32 = num1 / num2;
如果你想开发一些逻辑 是可以不存在的,您可以使用 Option
. 安 Option
是 None
如果该值不存在。
预期行为的例子。
fn main() {
assert_eq!(2.0, divide_or_get_first(2.0, None));
assert_eq!(5.0, divide_or_get_first(10.0, Some(2.0)));
}
fn divide_or_get_first(num1: f32, num2: Option<f32>) -> f32 {
match num2 {
Some(value) => {
num1 / value
}
None => {
num1
}
}
}
请看。