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...
传递给map_or 的参数被热切评估;如果要传递函数调用的结果,建议使用 map_or_else ,它是惰性求值的。 例子 let x: Result<_, &str> = Ok("foo"); assert_eq!(x.map_or(42, |v| v.len()), 3); let x: Result<&str, _> = Err("bar"); assert_eq!(x.map_or(42, |v| v.len()), ...
幸运的是,Option 的map、and_then、以及很多其他组合算子也为 Result 实现了。官方文档的 Result 一节包含完整的方法列表。use std::num::ParseIntError;// 就像 `Option` 那样,我们可以使用 `map()` 之类的组合算子。 // 除去写法外,这个函数与上面那个完全一致,它的作用是: // 如果值是合法的,计算其乘积...
不解包的情况下如果想要获取被包在里面的值,就需要用到 Option<T> 和 Result<T, E> 里的一些常用方法。 Option<T> 的一些方法 map:在 Option 是 Some 的情况下,通过 map 中提供的函数或闭包对 Some 里的值进行操作。在 Option 是 None 的情况下,保持 None 不变。map() 会消耗原类型,也就是获取所有...
map_or_else(|| other_float * 2, |some_int| some_int.into()); 1.5 【推荐】映射为 Result 枚举 这种方法在函数编程中尤为有用。当函数的返回值类型为 Result,但是在函数体中需要处理 Option 时就应当使用这个方法。 配合? 宏,效果更好 // ok_or:映射为 Result // 如果 foo 有值,那么 int_...
map函数用于将一个集合中的每个元素映射到另一个集合中,产生一个新的集合。 代码语言:javascript 代码运行次数:0 运行 AI代码解释 fnsquare(x:i32)->i32{x*x}fnmain(){letnumbers=vec![1,2,3,4,5];letsquared_numbers:Vec<i32>=numbers.iter().map(|x|square(*x)).collect();println!("{:?}",...
映射表(Map)在其他语言中广泛存在。其中应用最普遍的就是键值散列映射表(Hash Map)。 View Code 注意:这里没有声明散列表的泛型,是因为 Rust 的自动判断类型机制。 insert 方法和 get 方法是映射表最常用的两个方法。 Rust 的映射表是十分方便的数据结构,当使用 insert 方法添加新的键值对的时候,如果已经存在相...
Result 实现了 FromIter,因此结果的向量(Vec<Result<T, E>>)可以被转换成结果包裹着向量(Result<Vec<T>, E>)。一旦找到一个 Result::Err ,遍历就被终止。 fn main() { let strings = vec!["tofu", "93", "18"]; let numbers: Result<Vec<_>, _> = strings .into_iter() .map(|s| s.pars...
除了上述方法外,Option 类型还提供了一些其他方法,如map、and、or等,用于处理 Option 值的转换、组合和链式操作。这些方法在处理 Option 值时非常有用,可以避免频繁的模式匹配和空值检查。 三、Option 类型的使用示例 下面通过一些示例代码来演示 Option 类型的使用。