Coroutines, Self-Referential Structs, and Pinning 218 In this version, we simply create a counter variable at the top of our async_main function and increase the counter for each response we receive from the server. At the end, we print out how many responses we received. Note For brevity, I won't present the entire code base going forward; instead, I will only present the relevant additions and changes. Remember that you can always refer to the same example in this book's Git Hub repository. The way we implement this is to add a new field called stack to our Coroutine0 struct: ch09/a-coroutines-variables/src/main. rs struct Coroutine0 { stack: Stack0, state: State0, } The stack fields hold a Stack0 struct that we also need to define: ch09/a-coroutines-variables/src/main. rs #[derive(Default)] struct Stack0 { counter: Option<usize>, } This struct will only hold one field since we only have one variable. The field will be of the Option<usize> type. We also derive the Default trait for this struct so that we can initialize it easily.