for_each_repeat

Crates.iofor_each_repeat
lib.rsfor_each_repeat
version0.1.3
sourcesrc
created_at2022-01-27 11:54:14.806398
updated_at2022-01-27 12:40:30.242457
description`Iterator::for_each` that can repeat current iteration
homepage
repositoryhttp://github.com/zohnannor/for_each_repeat/
max_upload_size
id522491
size11,227
(zohnannor)

documentation

README

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.

Commit count: 0

cargo fmt