enjoin
enjoin's async join macros operate at the syntax level. It allows you to...
break, continue, and return out of async code running in a join
for _ in 0..10
Use ? (try operator) in a join
async
Share mutable borrows accross a join
... as long as the mutable borrows don't last across yield point / await point.
let mut count = 0;
join_auto_borrow!;
See my blog post here for motivations, working mechanism, comparison to other join macros, and more.