Using the `async fn` syntax, this whole wrapper becomes:
async fn time_future<Fut: Future>(fut: Fut) -> (Fut::Output, Duration) {
let start = Instant::now();
let result = fut.await;
(result, start.elapsed())
}