我有一些这样的向量
let example1: Vec<Option<u64>> = vec![None, None, Some(2), Some(35)];
let example2: Vec<Option<u64>> = vec![Some(5), Some(19), Some(4), Some(6)];
并且我想要一个函数,该函数将为None
返回example1
但为Some([5, 19, 4, 6])
返回example2
。
换句话说,如果任何选项为None
,我想要一个返回None
的函数,但是如果所有选项均为Some
,它将全部解包并返回{{1 }}。
答案 0 :(得分:7)
将其转换为迭代器并使用Some
。
.collect::<Option<Vec<_>>
或使用类型注释
let output = vec.into_iter().collect::<Option<Vec<_>>
请参见collect()
及其用于let output: Option<Vec<_>> = vec.into_iter().collect();
的{{3}}。