#generator #iterator #temporary #utils #gen-iter-return

nightly gen-iter

用于创建迭代器的临时实用工具

6个版本

使用旧版Rust 2015

0.3.0 2023年1月3日
0.2.1 2022年2月7日
0.2.0 2020年4月30日
0.1.2 2017年8月30日

#34 in #temporary

Download history 485/week @ 2024-03-14 264/week @ 2024-03-21 108/week @ 2024-03-28 108/week @ 2024-04-04 45/week @ 2024-04-11 48/week @ 2024-04-18 59/week @ 2024-04-25 83/week @ 2024-05-02 54/week @ 2024-05-09 67/week @ 2024-05-16 91/week @ 2024-05-23 62/week @ 2024-05-30 60/week @ 2024-06-06 89/week @ 2024-06-13 130/week @ 2024-06-20 65/week @ 2024-06-27

352 每月下载
用于 3 crates

MIT/Apache

10KB
182 代码行(不含注释)

gen_iter - 使用生成器创建迭代器。

有关示例和用法,请参阅文档

许可证

双许可 MIT / apache-2.0


lib.rs:

gen_iter - 创建生成器作为迭代器使用

GenItergen_iter!

GenIter 将一个 Generator<()> 转换为一个迭代器,该迭代器遍历生成器产生的类型。生成器的返回类型需要为 ()

gen_iter! 帮助创建 GenIter

#![feature(generators)]

use gen_iter::gen_iter;

fn fibonacci() -> impl Iterator<Item = u64> {
    gen_iter!({
        let mut a = 0;
        let mut b = 1;

        loop {
            let c = a + b;
            a = b;
            b = c;

            yield a;
        }
    })
}

for elem in fibonacci().map(|x| 2 * x).take(10) {
    println!("{}", elem);
}

GenIterReturngen_iter_return!

GenIterReturn 可以从 Generator<()> 转换,&mut GenIterReturn<G> 可以用作迭代器。在迭代器耗尽后可以获取生成器的返回值。

gen_iter_return! 帮助创建 GenIterReturn

#![feature(generators)]

use gen_iter::gen_iter_return;

let mut g = gen_iter_return!({
    yield 1;
    yield 2;
    return "done";
});

for y in &mut g {
    println!("yield {}", y);
}
println!("generator is_done={}", g.is_done()); // true
println!("generator returns {}", g.return_or_self().ok().unwrap()); // "done"

无运行时依赖