3 releases
new 0.1.2 | Apr 15, 2025 |
---|---|
0.1.1 | Apr 14, 2025 |
0.1.0 | Apr 14, 2025 |
#567 in Asynchronous
258 downloads per month
10KB
195 lines
Rust Generator
A simple generator base on async rust! No experimental needed!
Example
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;
}
}
}
Dependencies
~2.2–3.5MB
~68K SLoC