#iterator-extension #scan #iterator #extension

no-std simple_scan

简单扫描操作的迭代器扩展

6 个版本

0.3.1 2024年1月14日
0.3.0 2023年10月30日
0.2.2 2023年7月30日
0.1.0 2023年6月26日

#1231Rust 模式


用于 random_grouping

MIT/Apache 许可

10KB
153 行代码(不包括注释)

simple_scan

Iterator 扩展 trait 用于简单扫描。

该库的作者英语水平不高。
如果文档难以阅读,请见谅。

这是什么?

此 crate 提供了 IteratorSimpleScanExt trait。该 IteratorSimpleScanExt trait 是 Iterator trait 的扩展 trait,它实现了类似于 Iterator trait 的 scan 方法的某些方法,但更加简化且专用。

以下是一些这些方法的列表。左侧的示例代码显示了使用这些简化方法的场景,右侧的示例代码显示了使用 scan 方法实现相同过程的场景。

名称简化版本scan 版本

trace

(0..10).trace(0, |s, x| s + x)
(0..10).scan(0, |s, x| {
    *s += x;
    Some(*s)
});

trace2

(0..10).trace2(0, |s, x| s + x)
(0..10).scan(0, |s, x| {
    let prev = *s;
    *s += x;
    Some((prev, *s))
});

diff

(0..10).diff(0, |c, p| c - p)
(0..10).scan(0, |s, x| {
    let p = mem::replace(s, x);
    Some(x - p)
});

更新内容

v0.3.1

  • 小幅度重构。

v0.3.0

  • 在几个位置添加了 must_use 注释。

v0.2.1

  • 小幅度重构。

v0.2.0

  • 更改 trace2 行为。

    在版本 0.2 中,它跟踪前一个和当前状态。
    而在版本 0.1 中,它跟踪当前状态和当前输入。

无运行时依赖