If you've done any async programming in Rust, you will have encountered the problem, where you can't run tokio::spawn, because the future cannot be sent between threads safely. This is a tale about why this problem exists, how it could be solved for good, and why it's not trivial to do without breaking existing code. Rust Thread Safety Rust ensures thread safety through 2 really ingenious mechanisms - lifetimes and Send/Sync traits. We won't talk about lifetimes, but we will instead focus on ...