So @sfackler pointed out something to me. The problem @sfackler reported was that temporary lifetimes around await were too short. The effect was that foo(&[123]).await would give an error where foo(&[123]) would not (in sync code). My assumption was that this was caused by our temporary lifetimes being derived from the desugared version of await, which doesn't seem like what one might expect.
Here is an example showing the problem:
async version, playground
sync version, playground
So @sfackler pointed out something to me. The problem @sfackler reported was that temporary lifetimes around
awaitwere too short. The effect was thatfoo(&[123]).awaitwould give an error wherefoo(&[123])would not (in sync code). My assumption was that this was caused by our temporary lifetimes being derived from the desugared version of await, which doesn't seem like what one might expect.Here is an example showing the problem:
async version, playground
sync version, playground