gpt4 book ai didi

rust - 如何使用try_trait解开具有不同错误类型的结果

转载 作者:行者123 更新时间:2023-12-03 11:33:55 31 4
gpt4 key购买 nike

我喜欢使用try_trait功能来编写env getter函数

use std::env;

pub fn getU32(key: &str) -> Option<u32> {
match env::var(key) {
Ok(value) => match value.parse::<u32>() {
Ok(value) => Some(value),
_ => None
},
_ => None
}
}

pub fn getI32(key: &str) -> Option<i32> {
Some(env::var(key)?.parse::<i32>()?);
}
getU32可以编译并运行,但是 getI32具有与 Errorvar不同的 parse类型...但这无关紧要,因为返回类型是 Option

最佳答案

您想要的是:

pub fn getI32(key: &str) -> Option<i32> {
std::env::var(key).ok()?.parse::<i32>().ok()
}
当引入 Try特性来进一步扩展 ?运算符时,决定通过允许将 ?转换为 Result来轻松丢弃 Option错误并不是一个好主意。
因此,如果您不关心特定错误是什么,因为您认为不存在该值不是错误,请使用 .ok()明确地说出来。

关于rust - 如何使用try_trait解开具有不同错误类型的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63915625/

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