> This is also how generators and async functions actually work and where this problem often arises, so it's not a stretch to think about it like that.
There is a crate that uses async functions to accomplish exactly this. https://crates.io/crates/escher
Disclaimer, I've never actually tried using it. I've used owning_ref or ouroboros depending on what I need.