Aar*_*sen 6 pattern-matching while-loop rust
我有一个while let循环遍历迭代器Result并使用模式匹配; 它遍历迭代器,直到它命中一个Err或者它Ok的值是一个空字符串:
while let Some(Ok(a)) = some_iterator.next() {
if a == "" {
break;
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
这段代码工作正常.但是,我认为这个if陈述看起来很难看,可能不是惯用的Rust.在match语句中,保护可以用于模式匹配,如下所示:
match foo {
Some(Ok(a)) if a != "" => bar(a)
// ...
}
Run Code Online (Sandbox Code Playgroud)
这对我的while let循环来说是理想的,虽然那里使用的模式匹配似乎不支持它,导致语法错误:
while let Some(Ok(a)) = some_iterator.next() if a != "" { // <-- Syntax error
// ...
}
Run Code Online (Sandbox Code Playgroud)
在这样的情况下,有没有办法使用这样的守卫while let?如果没有,如果发现空字符串,是否有更好的方法可以打破循环?