If Future<Output = T> is an asynchronous version of T , then Stream<Item = T> is an asynchronous version of Iterator<Item = T> . A stream represents a sequence of value-producing events that occur asynchronously to the caller.
but that does not seem to make sense in our case, since the 10,000 GET requests can return in any order
if no:
what futures related API should I be looking at instead ?
The difference between a Vec and a Stream is that a Vec has already allocated memory for the 10K requests, while a Stream will process them in chunks (it doesn't allocate space for the 10K requests in advance).