Creating Your Own Runtime 254 fn main() { let mut executor = runtime::init(); executor. block_on(async_main()); } async fn async_main() { println!("Program starting"); let txt = Http::get("/600/Hello Async Await"). await; println!("{txt}"); let txt = Http::get("/400/Hello Async Await"). await; println!("{txt}"); } No need for corofy or anything special this time. The compiler will rewrite this for us. Note Notice that we've removed the declaration of the future module. That's because we simply don't need it anymore. The only exception is if you want to retain and use the join_all function we created to join multiple futures together. Y ou can either try to rewrite that yourself or take a look in the repository and locate the ch10/a-rust-futures-bonus/src/ future. rs file, where you'll find the same version of our example, only this version retains the future module with a join_all function that works with Rust futures. future. rs Y ou can delete this file altogether as we don't need our own Future trait anymore. Let's move right along to http. rs and see what we need to change there. http. rs The first thing we need to change is our dependencies. We'll no longer rely on our own Future, Waker, and Poll State ; instead, we'll depend on Future, Context, and Poll from the standard library. Our dependencies should look like this now: ch10/a-rust-futures/src/http. rs use crate::runtime::{self, reactor}; use mio::Interest; use std::{ future::Future, io::{Error Kind, Read, Write},