Crates.io | for_each_repeat |
lib.rs | for_each_repeat |
version | 0.1.3 |
source | src |
created_at | 2022-01-27 11:54:14.806398 |
updated_at | 2022-01-27 12:40:30.242457 |
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_repeat
Ever 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
Repeat
Import 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.