如何在Rust中迭代多个选项向量?

如何在Rust中迭代多个选项向量?,rust,Rust,我在Rc指向trait对象的指针上有几个选项向量的引用,我想迭代它们的所有项 基本上,这些向量的声明如下所示: 让vec_0:Option=。。。; 设vec_1:Option=。。。; ... 让vec_n:Option=。。。; 我尝试使用chain()方法,如下所示: let it=vec\u o.unwrap\u或(&vec![]).iter() .chain(vec_1.展开或(&vec![])) ... .chain(vec_n.unwrap_或(&vec![]); 因为我在里面{

我在
Rc
指向trait对象的指针上有几个选项向量的引用,我想迭代它们的所有项

基本上,这些向量的声明如下所示:

让vec_0:Option=。。。;
设vec_1:Option=。。。;
...
让vec_n:Option=。。。;
我尝试使用
chain()
方法,如下所示:

let it=vec\u o.unwrap\u或(&vec![]).iter()
.chain(vec_1.展开或(&vec![]))
...
.chain(vec_n.unwrap_或(&vec![]);
因为我在里面{
...
}
但是这段代码有一个问题,因为这些空向量是临时对象,在使用迭代器时会被删除

现在,我已经采取了严格的方式:

让mut vector=vec![];
如果让一些(vc)=向量0{
extend(vc.iter())
}
如果让一些(vc)=vec_1{
extend(vc.iter())
}
...
如果让一些(vc)=向量{
extend(vc.iter())
}
对于向量中的el{
...
}
这本看起来很笨重,阅读起来也不方便

是否有任何方法可以更轻松地遍历
vec_0
vec_1
等的所有元素?我是铁锈行业的新手,在我看来,一定有
chain()
方法的解决方案


任何帮助都将不胜感激。=)

您可以使用
迭代器的API轻松完成:

fn main(){
设vec_0=Some(vec![7,8,9]);
设vec_1=Some(vec![1,2,3]);
设vec_2=None;
设vec_3=Some(vec![4,5,6]);
设all=[vec_0,vec_1,vec_2,vec_3];/[Option;3]
因为我
.国际热核实验堆(iter)
//过滤掉None,生成&Vec的迭代器
.平面图(| f | f)
//生成i32的迭代器的迭代器
.map(|v | v.iter())
//将此迭代器展平为单个i32迭代器
.flatte()
{
println!(“i={}”,i);
}
}

您可以使用
.flat_map(| v | v.iter())
而不是
.map(| v | v.iter()).flant()
谢谢!这个解决方案对我来说非常有效=)@Jmb,感谢您提出了如何让它变得更好的想法!