我正在学习Rust,并尝试适应使用
我意识到在
Result
和Option
。给定一个包含它们的向量,如果我只想要没有出错的结果(或对于Option
不是none),是否有比下面更优雅的方法来实现这个目标?或者这就是通常需要编写的样板代码量?我意识到在
map
中可以进行更细粒度的操作,例如unwrap_or_else
和partition
将好的结果与坏的结果分开。
let optvec = vec![Some(1), None, Some(4), None];
let filtered = optvec.iter()
.filter(|q| q.is_some())
.map(|q| q.unwrap())
.collect::<Vec<i32>>();