This crate provides a coroutine implementation based on Rust's async/await syntax.
Usage
useasync_coroutine::{Coroutine, State};letmut co =Coroutine::new(|handle,value|async move{assert_eq!(value,1);assert_eq!(handle.yield_(true).await,2);assert_eq!(handle.yield_(false).await,3);"Bye"});assert_eq!(co.resume_with(1),State::Yield(true));assert_eq!(co.resume_with(2),State::Yield(false));assert_eq!(co.resume_with(3),State::Complete("Bye"));