Rust:错误,类型不匹配。找到 std::result::Result
Posted
技术标签:
【中文标题】Rust:错误,类型不匹配。找到 std::result::Result【英文标题】:Rust: Error, mismatched types. Found std::result::Result 【发布时间】:2020-05-22 19:07:44 【问题描述】:我正在制作一个系统来划分两个数字,如果第二个数字不存在,它只会选择第一个数字。代码如下:
let new_num: f32 = match num1/num2
Ok(num) => num,
Err(error) => num1,
;
但是,它返回:
Error: Mismatched types. Expected f32, found std::result::Result
为什么会发生这种情况,我该如何解决?
【问题讨论】:
您能否首先分享一下您如何获得num1
和num2
的代码?
【参考方案1】:
表达式num1/num2
是算术除法。给定变量num1
和num2
的类型f32
,该表达式的结果类型为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
见:
https://doc.rust-lang.org/std/option/【讨论】:
以上是关于Rust:错误,类型不匹配。找到 std::result::Result的主要内容,如果未能解决你的问题,请参考以下文章