Coroutines, Self-Referential Structs, and Pinning 242 Tip Y ou'll find the example code we'll go through here in this book's Git Hub repository under the ch09/e-coroutines-pin folder. Now that we have a new folder set up, let's start making the necessary changes. The logical place to start is our Future definition in future. rs. future. rs The first thing we'll do is pull in Pin from the standard library at the very top: ch09/e-coroutines-pin/src/future. rs use std::pin::Pin; The only other change we need to make is in the definition of poll in our Future trait: fn poll(self: Pin<&mut Self>, waker: &Waker)-> Poll State<Self::Output>; That's pretty much it. However, the implications of this change are noticeable pretty much everywhere poll is called, so we need to fix that as well. Let's start with http. rs. http. rs The first thing we need to do is pull in Pin from the standard library. The start of the file should look like this: ch09/e-coroutines-pin/src/http. rs use crate::{future::Poll State, runtime::{self, reactor, Waker}, Future}; use mio::Interest; use std::{io::{Error Kind, Read, Write}, pin::Pin}; The only other place we need to make some changes is in the Future implementation for Http Get Future, so let's locate that. We'll start by changing the arguments in poll : ch09/e-coroutines-pin/src/http. rs fn poll(mut self: Pin<&mut Self>, waker: &Waker)-> Poll State<Self::Output>