pub async fn timeout<T>( duration: Duration, future: impl Future<Output = T>, ) -> Result<T, TimeElapsed>