#generator #simpler #generator-trait

simple_generators

使生成器工作更简单

1个不稳定版本

0.1.3 2023年1月23日

#22 in #simpler

MIT 许可证

3KB

simple_generators

一个包含更简单生成器->迭代器创建宏的库

用法

使用最新nightly版本

cargo add simple_generators

或者

[dependencies]
simple_generators = { version="0.1.3" }

示例

#![feature(generators, generator_trait)]

use simple_generators::*;

fn main() {
    println!("{}", test_macro(10).sum::<u64>());

    let foo = Foo {
        vec: vec![10, 20, 30],
    };

    for e in foo.test_macro() {
        println!("{}", e);
    }
}

#[generator]
fn test_macro(n: u64) -> impl Iterator<Item = u64> {
    let mut num = 0;
    while num < n {
        yield num;
        num += 1;
    }
}

struct Foo {
    vec: Vec<u64>,
}

impl Foo {
    #[generator]
    fn test_macro<'a>(&'a self) -> impl Iterator<Item = u64> + 'a {
        for item in &self.vec {
            yield *item;
        }
    }
}

依赖关系

~1.5MB
~35K SLoC