Rust Result.map用法及代码示例本文简要介绍rust语言中 core::result::Result.map 的用法。用法pub fn map<U, F: FnOnce(T) -> U>(self, op: F) -> Result<U, E> 通过将函数应用于包含的 Ok 值,将 Result<T, E> 映射到 Result<U, E>,保持 Err 值不变。
除此之外,相比于Option, Result也有一些特有的针对错误类型的方法map_err和or_else等。 其中: map_err 处理一个Result,当前是某种错误类型时,通过传入的op方法,转换其错误类型; 如果是非错误类型,则不受影响。 pub fn map_err<F, O: FnOnce(E) -> F>(self, op: O) -> Result<T, F> { match self...
幸运的是,Option 的map、and_then、以及很多其他组合算子也为 Result 实现了。官方文档的 Result 一节包含完整的方法列表。use std::num::ParseIntError;// 就像 `Option` 那样,我们可以使用 `map()` 之类的组合算子。 // 除去写法外,这个函数与上面那个完全一致,它的作用是: // 如果值是合法的,计算其乘积...
参考:https://doc.rust-lang.org/rust-by-example/error/result/result_map.html 示例 Result 的 map 方法可以对值进行转换。 繁琐版本 usestd::num::ParseIntError;fnmultiply(first: &str, second: &str)->Result<i32, ParseIntError> {matchfirst.parse::<i32>() {Ok(f1) =>matchsecond.parse::<i32...
关于Result的map 前面关于 panic 例子,提供给我们的是一个无用的错误消息。为了避免这样,我们需要更具体地指定返回类型。在那个例子中,该常规元素为i32类型。 为了确定Err的类型,我们可以借助parse(),它使用FromStrtrait 来针对i32实现。结果是,Err类型被指定为ParseIntError。
不解包的情况下如果想要获取被包在里面的值,就需要用到 Option<T> 和 Result<T, E> 里的一些常用方法。 Option<T> 的一些方法 map:在 Option 是 Some 的情况下,通过 map 中提供的函数或闭包对 Some 里的值进行操作。在 Option 是 None 的情况下,保持 None 不变。map() 会消耗原类型,也就是获取所有...
// map:将 Ok 中带的类型转换为其他类型,(例子中 i32 转换为 f64)letfloat_result:Result<f64,&staticstr>=foo.map(|v|v.into());// map_or:如果为 Ok 则执行后面的闭包,如果为 Err 则返回第一个默认值 42.0letfloat_value:f64=foo.map_or(42.0,|v|v.into());// map_or_else:默认值使用...
Result实现了FromIterator,因此您可以将Result移到外部,迭代器将处理其余的工作(包括在发现错误时停止...
因为你当前的代码返回了一个Vec,我们可以把它转换成一个迭代器,并把它收集成你想要的类型。类型注解...
因为你当前的代码返回了一个Vec,我们可以把它转换成一个迭代器,并把它收集成你想要的类型。类型注解...