Create Your Own Event Queue 66 If you're on Windows, my recommendation is to set up WSL (https://learn. microsoft. com/en-us/windows/wsl/install ), if you haven't already, and install Rust on the Linux operating system running on WSL. If you're using Mac, you can create a virtual machine (VM) running Linux, for example, by using the QEMU-based UTM application ( https://mac. getutm. app/ ) or any other solution for managing VMs on a Mac. A last option is to rent a Linux server (there are even some providers with a free layer), install Rust, and either use an editor such as Vim or Emacs in the console or develop on the remote machine using VS Code through SSH ( https://code. visualstudio. com/docs/remote/ssh ). I personally have good experience with Linode's offering ( https://www. linode. com/ ), but there are many, many other options out there. It's theoretically possible to run the examples on the Rust playground, but since we need a delay server, we would have to use a remote delay server service that accepts plain HTTP requests (not HTTPS) and modify the code so that the modules are all in one file instead. It's possible in a clinch but not really recommended. The delay server This example relies on calls made to a server that delays the response for a configurable duration. In the repository, there is a project named delayserver in the root folder. Y ou can set up the server by simply entering the folder in a separate console window and writing cargo run. Just leave the server running in a separate, open terminal window as we'll use it in our example. The delayserver program is cross-platform, so it works without any modification on all platforms that Rust supports. If you're running WSL on Windows, I recommend running the delayserver program in WSL as well. Depending on your setup, you might get away with running the server in a Windows console and still be able to reach it when running the example in WSL. Just be aware that it might not work out of the box. The server will listen to port 8080 by default and the examples there assume this is the port used. Y ou can change the listening port in the delayserver code before you start the server, but just remember to make the same corrections in the example code. The actual code for delayserver is less than 30 lines, so going through the code should only take a few minutes if you want to see what the server does. Design and introduction to epoll Okay, so this chapter will be centered around one main example you can find in the repository under ch04/a-epoll. We'll start by taking a look at how we design our example.