Coroutines, Self-Referential Structs, and Pinning 216 use runtime::Waker; fn main() { let mut executor = runtime::init(); executor. block_on(async_main()); } coroutine fn async_main() { println!("Program starting"); let txt = Http::get("/600/Hello Async Await"). wait; println!("{txt}"); let txt = Http::get("/400/Hello Async Await"). wait; println!("{txt}"); } This time, let's take a shortcut and write our corofied file directly back to main. rs since we've compared the files side by side enough times at this point. Assuming you're in the base folder, a-coroutine-variables, write the following: corofy. /src/main. rs. /src/main. rs The last step is to fix the fact that corofy doesn't know about Waker. Y ou can let the compiler guide you to where you need to make changes by writing cargo check, but to help you along the way, there are three minor changes to make (note that the line number is the one reported by re-writing the same code that we wrote previously): 64: fn poll(&mut self, waker: &Waker ) 82: match f1. poll( waker) 102: match f2. poll( waker) Now, check that everything is working as expected by writing cargo run. Y ou should see the following output (the output has been abbreviated to save a little bit of space): Program starting FIRST POLL-START OPERATION main: 1 pending tasks. Sleep until notified. HTTP/1. 1 200 OK [==== ABBREVIATED ====] Hello Async Await main: All tasks are finished