Crate switcheroo[−][src]
Switcheroo provides lightweight context switches in Rust.
It consists of two parts:
- A stack implementation (currently only providing a fixed 8Mb stack).
- A generator implementation.
Example
use switcheroo::stack::*; use switcheroo::Generator; fn main() { let stack = EightMbStack::new().unwrap(); let mut add_one = Generator::new(stack, |yielder, mut input| { loop { if input == 0 { break; } input = yielder.suspend(input + 1); } }); assert_eq!(add_one.resume(2), Some(3)); assert_eq!(add_one.resume(127), Some(128)); assert_eq!(add_one.resume(0), None); assert_eq!(add_one.resume(0), None); }
Modules
stack | Different stack implementations (currently only contains a 8 Mb stack). |
Structs
Generator | Generator wraps a closure and allows suspending its execution more than once, returning a value each time. |
Yielder | Yielder is an interface provided to every generator through which it returns a value. |