hir*_*ist 11 for-loop control-flow rust
铁锈中的惯用语for/else:
在 Python 中,我可以使用for/else检查循环是否for在语句处终止break或“正常”完成:
prod = 1
for i in range(1, 10):
prod *= i
if prod > 123:
break
else:
print("oops! loop terminated without break.")
Run Code Online (Sandbox Code Playgroud)
Rust 有类似的方法吗?这是我最接近的,但并不是特别相似。
let mut prod = 1u64;
let mut found = false;
for i in 1..10 {
prod *= i;
if prod > 123 {
found = true;
break;
}
}
if !found {
println!("oops! loop terminated without break.");
}
Run Code Online (Sandbox Code Playgroud)
似乎有关于Rust Internals的讨论;然而,这更多的是关于未来的可能性,而不是惯用的。
在 Python 中,惯用的代码被称为pythonic - 是否有一个类似的词来表示惯用的 Rust 代码?
从 Rust 1.65 开始,您可以打破块,可以选择使用值。RFC 中甚至提到了类似的案例作为动机:
let value = 'found: {
for i in 1..2 {
prod *= i;
if prod > 123 {
break 'found Some(prod);
}
}
println!("oops! loop terminated without break.");
None
};
Run Code Online (Sandbox Code Playgroud)
游乐场。
| 归档时间: |
|
| 查看次数: |
704 次 |
| 最近记录: |