Rust Generator
A simple generator base on async rust! No experimental needed!
Example
Code use rust_generator:
Code use experimental rust:
A simple generator base on async rust! No experimental needed!
Code use rust_generator:
#[rust_generator::generator]
fn fib() -> impl Iterator<Item = usize> {
let mut n1 = 1;
let mut n2 = 1;
let mut n3 = 2;
// note: there is no need to import yield_,
// because yield_ is just act like an attribute and
// will be replaced when rust_generator::generator is expanded.
yield_!(n1);
// `xxx.await` is also an alternative.
n2.await;
loop {
yield_!(n3);
n1 = n2;
n2 = n3;
n3 = n1 + n2;
}
}
fn main() {
for x in fib().take(10) {
println!("{x}");
}
}
Code use experimental rust:
fn fib() -> impl Iterator<Item = usize> {
gen {
let mut n1 = 1;
let mut n2 = 1;
let mut n3 = 2;
yield n1;
yield n2;
loop {
yield n3;
n1 = n2;
n2 = n3;
n3 = n1 + n2;
}
}
}