最佳答案
在更新到最新的 Rust 版本之前,下面的代码可以正常工作:
fn example(val: &[&str]) {
let parsed_value: Vec<usize> = val
.iter()
.filter_map(|e| e.parse::<usize>())
.collect();
}
但是,现在 parse 方法返回的是 Result
类型,而不是 Option
类型,我得到了错误:
error[E0308]: mismatched types
--> src/lib.rs:4:25
|
4 | .filter_map(|e| e.parse::<usize>())
| ^^^^^^^^^^^^^^^^^^ expected enum `std::option::Option`, found enum `std::result::Result`
|
= note: expected type `std::option::Option<_>`
found type `std::result::Result<usize, std::num::ParseIntError>`
我可以通过一个条件来创建一个 Option
,但是有没有更好/更干净的方法呢?