Result枚举在Rust中是使用频率极高的一个类型,常用于函数的返回值定义,其源码如下:
#[derive(Copy, PartialEq, PartialOrd, Eq, Ord, Debug, Hash...(feature = "rust1", since = "1.0.0")] T),
/// Contains the error value
#[lang = "Err"]
#...("{}", result);
unwrap源码中的unwrap_failed继续追下去的话,可以看到:
fn unwrap_failed(msg: &str, error: &dyn fmt::Debug..., msg, error)
}
调用了panic方法,这意味着如果Result返回的是Err,则程序会崩溃,可以试一把:
如果Err发生时不希望程序崩溃,可以使用unwrap_or()
let...("{}", result);
使用unwrap_or_else传入1个闭包匿名函数,可以随心所欲的对原始错误进行处理,这里我们啥也没干,|e|e,表示原样返回。