1 个不稳定版本

0.1.0 2023 年 2 月 2 日

Rust 模式 中排名 #2548

Download history • Rust 包仓库 5/week @ 2024-03-08 • Rust 包仓库 5/week @ 2024-03-15 • Rust 包仓库 15/week @ 2024-03-22 • Rust 包仓库 29/week @ 2024-03-29 • Rust 包仓库 12/week @ 2024-04-05 • Rust 包仓库 12/week @ 2024-04-12 • Rust 包仓库 12/week @ 2024-04-19 • Rust 包仓库 2/week @ 2024-04-26 • Rust 包仓库 4/week @ 2024-05-03 • Rust 包仓库 2/week @ 2024-05-10 • Rust 包仓库 10/week @ 2024-05-17 • Rust 包仓库 9/week @ 2024-05-24 • Rust 包仓库 16/week @ 2024-05-31 • Rust 包仓库 34/week @ 2024-06-07 • Rust 包仓库 26/week @ 2024-06-14 • Rust 包仓库 10/week @ 2024-06-21 • Rust 包仓库

每月下载量 87
用于 2 crates

Apache-2.0 协议

26KB
586

Iterflow

Rust 函数式编程工具。

这个crate深受 itertools 启发,但主要关注操作链式开发以实现声明式方法(与常规命令式方法相对)

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),
    ],
);

待办事项

  • 异步/等待与 Future 的支持

许可证

Iterflow 根据 Apache 许可证,版本 2.0 授权。有关完整许可证文本,请参阅 LICENSE


lib.rs:

额外的迭代器方法。

要使用此crate中的方法扩展 Iterator,请导入 Iterflow 特性

use iter_flow::Iterflow;

现在,所有 Result 迭代器都提供了新的方法,如 and_then

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),
    ],
);

没有运行时依赖