#iterator #chain #fallback #data-structures #no-alloc

无std empty-fallback-chain

类似于chain的迭代器适配器,但条件是第一个迭代器为空

2个稳定版本

1.0.1 2024年7月2日
1.0.0 2024年7月1日

算法中排名第618

MPL-2.0许可证

31KB
342

empty-fallback-chain

这是一个简单的Rust库,提供了一种迭代器组合器,类似于core::iter::Chain,它将两个迭代器连接在一起,一个接一个。然而,与该组合器不同,这个组合器仅在第一个迭代器不产生任何值时才会运行第二个迭代器。要开始,请参阅IteratorExt::empty_fallback_chain

当你有一系列迭代器并希望从第一个产生值的迭代器中取值时,这非常有用。该库中的组合器保证不会尝试从第二个迭代器中读取任何值,除非第一个迭代器产生 nothing,因此它非常适合懒加载。

此库中的代码还从标准库中实现了许多实现基础设施。这很重要,因为在嵌套链式连接的情况下,很容易意外创建难以优化的调用链。通过使用Rust标准库维护者已经完成的使其实现“优化友好”的工作,我们希望避免许多性能陷阱。

将来,可能可以实现更强大的功能,例如可以进行某种有趣的阈值链式连接,其中可以从“n”个迭代器中选择前“k”个。我认为实现这种方法的主要方式是创建某种宏,该宏创建一个具有阈值计数器的结构。但这不是目前的重点,除非有迫切需要此功能,否则此库可能很快就会达到某种“完整”状态。

无运行时依赖