Genawaiter
Stackless generators on stable Rust.
Install / Use
/learn @whatisaphone/GenawaiterREADME
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
- supports async generators (e.g.,
Streams) - allocation-free
- no runtime dependencies
- no compile-time dependencies either, with
default-features = false
- 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
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).
let odd_numbers_less_than_ten = Gen::new(|co| async move {
let mut n = 1;
while n < 10 {
co.yield_(n).await;
n += 2;
}
});
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
Related Skills
himalaya
344.4kCLI to manage emails via IMAP/SMTP. Use `himalaya` to list, read, write, reply, forward, search, and organize emails from the terminal. Supports multiple accounts and message composition with MML (MIME Meta Language).
node-connect
344.4kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
99.2kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
coding-agent
344.4kDelegate coding tasks to Codex, Claude Code, or Pi agents via background process
