【发布时间】:2021-04-09 06:03:24
【问题描述】:
如何编写这样的函数:
pub fn unwrap_some_or_none_with_error(input: Option<&'static str>) -> &str {
input.unwrap_or(0)
}
所以当 None 被发送到这个函数时它会返回 0,而当像 Some 这样的 Option 被发送时它会解开它?
【问题讨论】:
-
unwrap_or就是这样做的。这里的问题是您的类型没有意义:该函数应该返回&str但您的unwrap_or具有 integer 默认值。0不是字符串。 -
这就是我要问的,我希望它返回解包结果,或者如果没有则返回 0。这可能吗?
-
不,因为我注意到类型不匹配。
0是一个整数,整数不是字符串,你的函数被键入返回字符串。"0"可以正常工作,但我不知道你为什么要退回这样的东西。 -
0解包后您想做什么?可能有一种更惯用的方式来做你想做的事,但从这个问题来看,这可能是什么并不明显。例如,您可以在匹配的两个分支中或在附加到Option上的方法的闭包中处理这两种情况。
标签: rust