1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
|
[](https://github.com/Xudong-Huang/generator-rs/actions?query=workflow%3ACI)
[](https://crates.io/crates/generator)
[](https://docs.rs/generator)
# Generator-rs
rust stackful generator library
```toml
[dependencies]
generator = "0.7"
```
## Usage
```rust
use generator::{done, Gn};
fn main() {
let g = Gn::new_scoped(|mut s| {
let (mut a, mut b) = (0, 1);
while b < 200 {
std::mem::swap(&mut a, &mut b);
b = a + b;
s.yield_(b);
}
done!();
});
for i in g {
println!("{}", i);
}
}
```
## Output
```
1
2
3
5
8
13
21
34
55
89
144
233
```
## Goals
- [x] basic send/yield with message support
- [x] generator cancel support
- [x] yield_from support
- [x] panic inside generator support
- [x] stack size tune support
- [x] scoped static type support
- [x] basic coroutine interface support
- [x] stable rust support
## based on this basic library
- we can easily port python library based on generator into rust
- coroutine framework running on multi thread
## Notices
* This crate supports below platforms, welcome to contribute with other arch and platforms
- x86_64 Linux
- x86_64 MacOs
- x86_64 Windows
- aarch64 Linux
- loongarch64 Linux
## License
This project is licensed under either of the following, at your option:
* Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
* MIT License ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
|