1个不稳定版本
0.1.3 | 2023年1月23日 |
---|
#22 in #simpler
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