首页 > 解决方案 > unwrap_or in rust 返回两个值?

问题描述

如何编写这样的函数:

pub fn unwrap_some_or_none_with_error(input: Option<&'static str>) -> &str {
    input.unwrap_or(0)
}

这样当 None 被发送到这个函数时,它会返回 0,而当一个 Option likeSome被发送时,它会解开它?

标签: rust

解决方案


这是不可能的:Rust 是一种类型化语言,所以一切都只能有一个类型。执行您所描述的操作的惯用方法是使用 a Result,它可以保存一个值或一个错误。这Result可以通过以下方式创建ok_or

pub fn unwrap_some_or_none_with_error(input: Option<&'static str>) -> Result<&str, i32> {
    input.ok_or(0)
}

推荐阅读