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
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