@rain@jyn I figured it was something like that, but I haven't used nearly enough async Rust yet to be able to construct the precise counterexample in my head.
@predrag@jyn let's say you're traversing a Merkle linked list (in this case a chain of source control commits) to fold over them recursively -- if you just create a child future with the recursive call then await it, your task stack will grow in an unbounded fashion. If you spawn a new task for each node instead, this isn't an issue
@predrag@jyn Oneshot channels are kind of the bread and butter of async communication, because they're equivalent to calling a function and getting a return value back
@predrag @jyn let's say you're traversing a Merkle linked list (in this case a chain of source control commits) to fold over them recursively -- if you just create a child future with the recursive call then await it, your task stack will grow in an unbounded fashion. If you spawn a new task for each node instead, this isn't an issue