pub async fn timeout<T>( duration: Duration, future: T, ) -> Result<T::Output, Elapsed>where T: Future,