One other obvious alternative would have been to make all futures heap-allocate so that some can be recursive.
I think making recursive futures invoke `Box` or similar seems consistent with Rust's general "only pay for what you actually use".
I think making recursive futures invoke `Box` or similar seems consistent with Rust's general "only pay for what you actually use".
So you're actually paying a higher price than if the compiler could support stackful generators for recursive futures. In fact async just gets a lot easier to write and use if generators could be stackful, at least imho. Generators don't have the syntax nice-ness of async/await, but they're also more explicit which feels more in with the rest of Rust, where syntax sugar like async/.await() is the exception and not the norm.