| Crates.io | for_each_repeat |
| lib.rs | for_each_repeat |
| version | 0.1.3 |
| created_at | 2022-01-27 11:54:14.806398+00 |
| updated_at | 2022-01-27 12:40:30.242457+00 |
| description | `Iterator::for_each` that can repeat current iteration |
| homepage | |
| repository | http://github.com/zohnannor/for_each_repeat/ |
| max_upload_size | |
| id | 522491 |
| size | 11,227 |
for_each_repeatEver got frustrated when you realize that the for loop you were writing...
fn foo(mut iter: impl Iterator<Item=i32>) {
for i in iter {
// do something...
if i == 42 {
// ughh
}
}
}
...needs to repeat the current iteration in some cases?
You may though: "Oh come on now I need to think on how to rewrite this into a while loop!"
Fear not! Cause we've got
RepeatImport for_each_repeat::ForEachRepeat and put your for loop's body into a closure, that has to return LoopControl type.
Using Repeat you are able to redo current iteration with the same iterator value.
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]This crate can be used in no_std environment.