1 个不稳定版本
0.1.3 | 2022年1月27日 |
---|---|
0.1.2 |
|
0.1.1 |
|
0.1.0 |
|
#1567 在 Rust 模式
11KB
188 行
for_each_repeat
你是否曾经遇到过编写 for
循环时...
fn foo(mut iter: impl Iterator<Item=i32>) {
for i in iter {
// do something...
if i == 42 {
// ughh
}
}
}
...需要在一些情况下重复当前迭代的情况?
你可能想:"哦,天哪,我需要 思考 如何将这个重写为 while
循环!"
别担心!因为我们有
重复
导入 for_each_repeat::ForEachRepeat
并将你的 for
循环体放入一个闭包中,该闭包必须返回 LoopControl
类型。使用 Repeat
,你可以使用相同的迭代器值重新执行当前迭代。
use for_each_repeat::{ForEachRepeat, LoopControl};
fn foo(mut iter: impl Iterator<Item=i32>) {
let _: Option<()> = iter.for_each_repeat(|i| {
// do something...
if i == 42 {
// process it...
return LoopControl::Repeat(i);
}
LoopControl::Continue(())
});
}
#![no_std]
这个 crate 可以在 no_std
环境中使用。