This is pretty cool, but at the same time it's unfortunate to be reading things like "one could simply write" followed by "hc: impl HealthCheck<check(): Send> + Send + 'static".<p>I really enjoy writing Rust but I feel like a lot of things related to async just don't map very cleanly to the rest of the language. Apart from the complicated type shenanigans in this post there are a lot of gotchas with async that result in panics at runtime instead of compilation errors. Basically, I don't feel like Rust has my back when I'm writing async code.<p>Disclaimer: I am not a language designer so I have no clear idea how this could be solved, and I appreciate it's a very difficult problem!