Runtimes, Wakers, and the Reactor-Executor Pattern 192 The compiler will complain about not finding the reactor yet, but we'll get to that shortly. Next, we have to navigate to the impl Future for Http Get Future block, where we need to change the poll method so that it accepts a &Waker argument: ch08/b-reactor-executor/src/http. rs impl Future for Http Get Future { type Output = String; fn poll(&mut self, waker: &Waker )-> Poll State<Self::Output> {... The last file we need to change is main. rs. Since corofy doesn't know about Waker types, we need to change a few lines in the coroutines it generated for us in main. rs. First of all, we have to add a dependency on our new Waker, so add this at the start of the file: ch08/b-reactor-executor/src/main. rs use runtime::Waker; In the impl Future for Coroutine block, change the following three lines of code that I've highlighted: ch08/b-reactor-executor/src/main. rs fn poll(&mut self, waker: &Waker ) match f1. poll( waker) match f2. poll( waker) And that's all we need to do in step 1. We'll get back to fixing the errors in this file as the last step we do; for now, we just focus on everything concerning the Waker. The next step will be to create a proper Executor. Step 2-Implementing a proper Executor In this step, we'll create an executor that will: Hold many top-level futures and switch between them Enable us to spawn new top-level futures from anywhere in our asynchronous program