我在遍历一个Path引用的向量,现在我使用一个crate来返回Option<&Path>
类型,我读到Option
有一个迭代器,但是有没有一种方法可以维护我的forloop结构,比如:
let mut paths: Vec<&Option<&Path>> = vec![];
for i in paths {
...
}
因为我需要检查当前的迭代路径值是否存在。我是这样做的:
if std::path::Path::new(&i).exists()
显然std::path::Path
不满足std::option::Option
。
我有没有办法维持这种结构并满足Option类型?特别是,我该如何修改if语句来满足它?
2条答案
按热度按时间v9tzhpje1#
对于每个值,您只需要检查它是否为
Option::Some
。因为
Option
确实是可迭代的,所以可以只使用这个属性:一个
Option
在概念上是0或1个元素的集合,通过展平它可以移除Option::None
示例,并将Option::Some
替换为它们所包含的任何内容(路径)。顺便说一句,为什么要从
Path
创建Path
?您可以只选中if i.exists()
,因为i
已经是&Path
了。7ajki6be2#
或者:
或者: