繁体   English   中英

如何转换 Vec <Option<T> &gt; 到一个选项<Vec<T> &gt;

[英]How can I convert a Vec<Option<T>> to an Option<Vec<T>>

我有一些像这样的向量

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)];

我想要一个函数,它会为example1返回None但会为example2返回Some([5, 19, 4, 6])

换句话说,我想要一个函数,如果任何选项都是None ,则返回None ,但如果所有选项都是Some它会将它们全部解包并返回Some

将其转换为迭代器并使用.collect::<Option<Vec<_>>>()

let output = vec.into_iter().collect::<Option<Vec<_>>>();

或使用类型注释

let output: Option<Vec<_>> = vec.into_iter().collect();

请参阅collect()和它用于OptionFromIterator特征实现

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM