Rust 锈蚀:错误,类型不匹配。找到std::result::result
我正在制作一个系统来划分两个数字,如果第二个数字不存在,它只选择第一个数字。代码如下:Rust 锈蚀:错误,类型不匹配。找到std::result::result,rust,Rust,我正在制作一个系统来划分两个数字,如果第二个数字不存在,它只选择第一个数字。代码如下: let new_num: f32 = match num1/num2 { Ok(num) => num, Err(error) => num1, }; 然而,它返回: 错误:类型不匹配。应为f32,找到std::result::result 为什么会发生这种情况?我如何修复它?表达式num1/num2是一个算术除法。给定两个变量num1和num2的类型f32,该表达式的结
let new_num: f32 = match num1/num2 {
Ok(num) => num,
Err(error) => num1,
};
然而,它返回:
错误:类型不匹配。应为f32,找到std::result::result
为什么会发生这种情况?我如何修复它?表达式
num1/num2
是一个算术除法。给定两个变量num1
和num2
的类型f32
,该表达式的结果具有类型f32
,而不是result
示例:
let num1: f32 = 2.0;
let num2: f32 = 3.0;
let new_num: f32 = num1 / num2;
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
}
}
}
如果要为不存在的东西开发逻辑,可以使用选项
。如果值不存在,选项
为None
预期行为示例:
let num1: f32 = 2.0;
let num2: f32 = 3.0;
let new_num: f32 = num1 / num2;
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
}
}
}
fn main(){
assert_eq!(2.0,先除_或_get_(2.0,无));
assert_eq!(5.0,先除_或_get_(10.0,部分(2.0));
}
fn首先除以或获取(num1:f32,num2:Option)->f32{
匹配num2{
一些(值)=>{
num1/数值
}
无=>{
num1
}
}
}
见:
num1
和num2
的代码吗?