![crate-badge] ![docs-badge] ![ci-badge]
This crate implements stackless generators (aka coroutines) in stable Rust. Instead of using yield
, which won't be stabilized anytime soon, you use async
/await
, which is stable today.
Features:
Stream
s)default-features = false
Example:
```rust let oddnumberslessthanten = gen!({ let mut n = 1; while n < 10 { yield_!(n); // Suspend a function at any point with a value. n += 2; } });
// Generators can be used as ordinary iterators. for num in oddnumberslessthanten { println!("{}", num); } ```
Result:
text
1
3
5
7
9
And here is the same generator, this time without macros. This is how you do things with default-features = false
(which eliminates the proc macro dependencies).
rust
let odd_numbers_less_than_ten = Gen::new(|co| async move {
let mut n = 1;
while n < 10 {
co.yield_(n).await;
n += 2;
}
});