gpt4 book ai didi

rust - 使用 Option 中的 T 作为 Rust 中的函数参数

转载 作者:行者123 更新时间:2023-11-29 08:08:58 26 4
gpt4 key购买 nike

对于这段代码:

fn inner_compare<T:PartialEq+PartialOrd>(&self, val: T, fixed_val: T) -> bool {
match self.operator {
"==" => val == fixed_val,
">=" => val >= fixed_val,
"<=" => val <= fixed_val,
">" => val > fixed_val,
"<" => val < fixed_val,
_ => false,
}
}

打电话

self.inner_compare(val, self.fixed_int_val);

在哪里self两个代码片段中的类型相同,self.fixed_int_val是一个 Option<int> ,如何只使用 int在函数参数中?当前调用错误与

main.rs:29:52: 29:70 error: mismatched types: expected `T` but found `core::option::Option<int>` (expected type parameter but found enum core::option::Option)

这可能是一个愚蠢的问题,但我还没有找到很多关于如何在调用 Some() 后将选项转换回其原始类型的文档。 .

最佳答案

有几种方法可以从选项中提取原始值。由于 Option 是一个枚举,它可以表示两个变体,None 或 Some(x)。使用模式匹配,您可以同时处理这两种情况。

match self.fixed_int_val {
Some(x) => self.inner_compare(val, x), //x in this case is the int contained in self.fixed_int_val
None => ,//include logic for whatever your failure state is here
}

还有另一种选择,即使用 unwrap 或 expect 方法。如果您 100% 确定您将处理 Some(x) 变体,或者您希望结果在 None 的情况下失败,请使用 unwrap。 Unwrap 将值移出 Some(x)。

self.inner_compare(val, self.fixed_int_val.unwrap());

还有用于包含自定义失败消息的 expect 方法。

self.inner_compare(val, self.fixed_int_val
.expect("Encountered None in self.fixed_int_val"));

您可以找到与选项类型相关的各种方法 here

关于rust - 使用 Option<T> 中的 T 作为 Rust 中的函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25150683/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com