With a Vec, the handles are awaited in the order they are inserted. This means that if a tasks exits with an error, it won't be logged until the tasks ahead of it in the Vec complete, which is typically not until the entire application exits.
Tokio provides an alternative structure to track tasks -- a JoinSet. When iterating over a JoinSet, task results are returned in the order that the tasks are completed instead of the order they're spawned. This could potentially be used to optionally shutdown the entire processor if any of its tasks exit with an error (this would be a new config).
With a
Vec
, the handles are awaited in the order they are inserted. This means that if a tasks exits with an error, it won't be logged until the tasks ahead of it in theVec
complete, which is typically not until the entire application exits.Tokio provides an alternative structure to track tasks -- a
JoinSet
. When iterating over aJoinSet
, task results are returned in the order that the tasks are completed instead of the order they're spawned. This could potentially be used to optionally shutdown the entire processor if any of its tasks exit with an error (this would be a new config).