This got me thinking: would it be possible to "abuse" Futures to implement laziness akin to what Haskell has i.e. to get opt-in laziness at the expression level?
There's a tiny little voice inside my head that says it might actually be possible, but I haven't played around enough with async / .await yet to know for sure.
The only reason I can think of is if I wanted an async computation that I might want to have pause and resume (potentially multiple times). Why I would want that, I don't know... yet.
It's just that Niko's words made me think about the link between async and laziness.
In other contexts, iterators can also be used effectively, even their unused warning message says literally that they are "lazy". For example, there's std::iter::repeat() that yields an unbounded number of copies of a value.