When you want to go from `Pin<&mut Struct>` to `Pin<&mut Field>` in [[Rust]] it's called a "pin projection". This typically requires `unsafe` to do, but the [pin-project](https://crates.io/crates/pin-project) crate handles that (correctly) with a couple of annotations. Add `#[pin_project]` to the enclosing struct and `#[pin]` to the fields you wish to project. You then use `self.project()` to get a handle to an automatically generated type with the `#[pin]`ed fields.