Step 1-Improving our runtime design by adding a Reactor and a Waker 187 Step 1-Improving our runtime design by adding a Reactor and a Waker In this step, we'll make the following changes: 1. Change the project structure so that it reflects our new design. 2. Find a way for the executor to sleep and wake up that does not rely directly on Poll and create a Waker based on this that allows us to wake up the executor and identify which task is ready to progress. 3. Change the trait definition for Future so that poll takes a &Waker as an argument. Tip Y ou'll find this example in the ch08/b-reactor-executor folder. If you follow along by writing the examples from the book, I suggest that you create a new project called b-reactor-executor for this example by following these steps: 1. Create a new folder called b-reactor-executor. 2. Enter the newly created folder and write cargo init. 3. Copy everything in the src folder in the previous example, a-runtime, into the src folder of a new project. 4. Copy the dependencies section of the Cargo. toml file into the Cargo. toml file in the new project. Let's start by making some changes to our project structure to set it up so that we can build on it going forward. The first thing we do is divide our runtime module into two submodules, reactor and executor : 1. Create a new subfolder in the src folder called runtime. 2. Create two new files in the runtime folder called reactor. rs and executor. rs. 3. Just below the imports in runtime. rs, declare the two new modules by adding these lines: mod executor; mod reactor; Y ou should now have a folder structure that looks like this: src |--runtime |--executor. rs |--reactor. rs |--future. rs