Crate iter_flow

source ·
Expand description

Extra iterator methods.

To extend Iterator with methods in this crate, import the Iterflow trait:

use iter_flow::Iterflow;

Now, new methods like and_then are available on all Result’s iterators:

let it = (0..4)
    .map(|n| if n == 0 { Err("invalid!") } else { Ok(n - 1) })
    .and_then(|n| if n > 0 { Ok(n - 1) } else { Err("illegal!") })
    .map_ok(|n| (n + 1) * 2)
    .flat_map_ok(|n| (0..n));

iter_flow::assert_equal(
    it,
    vec![
        Err("invalid!"),
        Err("illegal!"),
        Ok(0),
        Ok(1),
        Ok(0),
        Ok(1),
        Ok(2),
        Ok(3),
    ],
);

Modules

The concrete iterator types.

Traits

An Iterator blanket implementation that provides extra adaptors and methods.

Functions

Assert that two iterables produce equal sequences, with the same semantics as equal(a, b).