async fn timeout_async_io<F, T>(fut: F, timeout: Duration) -> Result<T>where F: Future<Output = Result<T>>,