c-async-await—concurrent futures
Okay, so we’ll build on the last example and do just the same thing. Create a new project called c-async-await
and copy Cargo.toml
and everything in the src
folder over.
The first thing we’ll do is go to future.rs
and add a join_all
function below our existing code:
ch07/c-async-await/src/future.rs
pub fn join_all<F: Future>(futures: Vec<F>) -> JoinAll<F> { let futures = futures.into_iter().map(|f| (false, f)).collect(); JoinAll { futures, finished_count: 0, } }
This function takes a collection of futures as an argument and returns a JoinAll<F>
future.
The function simply creates a new collection. In this collection, we will have tuples consisting of the original futures we received and a bool
value indicating whether the future...