Crates.io | iter-flow |
lib.rs | iter-flow |
version | 0.1.0 |
source | src |
created_at | 2023-02-02 16:15:41.55139 |
updated_at | 2023-02-02 16:15:41.55139 |
description | Functional programming utilities for Rust |
homepage | |
repository | https://github.com/lasantosr/iter-flow-rs/ |
max_upload_size | |
id | 774893 |
size | 40,781 |
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:
Iterflow is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.