iter-flow

Crates.ioiter-flow
lib.rsiter-flow
version0.1.0
sourcesrc
created_at2023-02-02 16:15:41.55139
updated_at2023-02-02 16:15:41.55139
descriptionFunctional programming utilities for Rust
homepage
repositoryhttps://github.com/lasantosr/iter-flow-rs/
max_upload_size
id774893
size40,781
Luis (lasantosr)

documentation

README

Iterflow

Functional programming utilities for Rust.

This crate is heavily inspired by itertools but with the main focus of chaining operations to develop in a declarative approach (as opposed to usual imperative)

fn sub_1(n: u32) -> Result<u32, &'static str> {
    if n == 0 { Err("illegal!") } else { Ok(n - 1) }
}

fn math_calc(n: u32) -> u32 {
    (n + 1) * 2
}

fn to_range(n: u32) -> Range<u32> {
    0..n
}

let it = (0..4)
    .map(sub_1)
    .and_then(sub_1)
    .map_ok(math_calc)
    .flat_map_ok(to_range);

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

TODO:

  • Support for async/await with Futures

License

Iterflow is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

Commit count: 6

cargo fmt