I'm honestly surprised that Rust's async stuff is as ergonomic to use, if not more ergonomic, than Kotlin's coroutines. The lack of intrinsically scoped tasks leaves a little to be desired, but Rust compiles everything down to something so much smaller and more concise, and the compile times so far haven't been offensive at all.