Step 1 – Improving our runtime design by adding a Reactor and a Waker
In this step, we’ll make the following changes:
- Change the project structure so that it reflects our new design.
- Find a way for the executor to sleep and wake up that does not rely directly on
Poll
and create aWaker
based on this that allows us to wake up the executor and identify which task is ready to progress. - Change the trait definition for
Future
so that poll takes a&Waker
as an argument.
Tip
You’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...