10 Creating Y our Own Runtime In the last few chapters, we covered a lot of aspects that are relevant to asynchronous programming in Rust, but we did that by implementing alternative and simpler abstractions than what we have in Rust today. This last chapter will focus on bridging that gap by changing our runtime so that it works with Rust futures and async/await instead of our own futures and coroutine/wait. Since we've pretty much covered everything there is to know about coroutines, state machines, futures, wakers, runtimes, and pinning, adapting what we have now will be a relatively easy task. When we get everything working, we'll do some experiments with our runtime to showcase and discuss some of the aspects that make asynchronous Rust somewhat difficult for newcomers today. We'll also take some time to discuss what we might expect in the future with asynchronous Rust before we summarize what we've done and learned in this book. We'll cover the following main topics: Creating our own runtime with futures and async/await Experimenting with our runtime Challenges with asynchronous Rust The future of asynchronous Rust Technical requirements The examples in this chapter will build on the code from the last chapter, so the requirements are the same. The example is cross-platform and will work on all platforms that Rust ( https://doc. rust-lang. org/beta/rustc/platform-support. html#tier-1-with-host-tools ) and mio (https://github. com/tokio-rs/mio#platforms ) support.