2 releases
| 0.99.1 | Mar 9, 2020 |
|---|---|
| 0.99.0 | Feb 16, 2020 |
#2484 in Asynchronous
53,522 downloads per month
Used in 156 crates
(via genawaiter)
4KB
genawaiter
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:
- supports resume arguments and completion values
- allocation-free
- no runtime dependencies
- no compile-time dependencies either, with
default-features = []
- no compile-time dependencies either, with
- built on top of standard language constructs, which means there are no platform-specific shenanigans
Example:
let odd_numbers_less_than_ten = 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 odd_numbers_less_than_ten {
println!("{}", num);
}
Result:
1
3
5
7
9
Development
Install prerequisites
Install the pre-commit hook
pre-commit install
This installs a Git hook that runs a quick sanity check before every commit.
Run the app
cargo run
Run the tests
cargo test