#iterator #generator #yield #genawaiter

genawaiter_iterator

从 Genawaiter 生成器创建迭代器的一种便捷方式

4 个版本

0.1.3 2024 年 2 月 4 日
0.1.2 2024 年 2 月 4 日
0.1.1 2024 年 2 月 4 日
0.1.0 2024 年 2 月 4 日

#13#yield

MIT 许可证

5KB
50

有关进一步说明,请参阅文档,或者只需检查源代码,它们足够小。


lib.rs:

这个包旨在轻松创建迭代器,而无需暴露它们实际上是 Genawaiter 生成器。生成器比迭代器(在本实现中)开销更大,但编写起来容易得多,因此我认为这是值得的。

使用 genawaiter_iterator! 创建迭代器结构体,然后使用 gen! 创建生成器,并自动将其转换为输出类型(假设你在 iter(&self) -> IterStructName 方法中调用了 gen!,可能还有另一个接收器类型)。

使用示例

use genawaiter_iterator::{genawaiter_iterator, gen};
use genawaiter::yield_;

genawaiter_iterator!(struct Iter yields usize);

fn iter() -> Iter {
    gen!({
        yield_!(1);
        yield_!(2);
        yield_!(3);
    })
}

let mut iterator_instance = iter();
assert_eq!(iterator_instance.next(), Some(1));
assert_eq!(iterator_instance.next(), Some(2));
assert_eq!(iterator_instance.next(), Some(3));
assert_eq!(iterator_instance.next(), None);

依赖关系

~100KB