diff --git a/src/client/http_client.rs b/src/client/http_client.rs index d1bfea5f..8286c208 100644 --- a/src/client/http_client.rs +++ b/src/client/http_client.rs @@ -7,6 +7,7 @@ use xdg::BaseDirectories; use chrono::Utc; use std::collections::HashSet; use std::sync::{Arc, Mutex}; +use std::io::Write; use http::{Request, Response}; use http::header::HeaderValue; @@ -208,7 +209,7 @@ impl HttpClient { self.request(req) } - pub fn download(&mut self, path: &str, mut output: Box) -> impl Future { + pub fn download(&mut self, path: &str, output: W) -> impl Future { let mut req = Self::request_builder(&self.server, "GET", path, None).unwrap(); @@ -234,9 +235,9 @@ impl HttpClient { future::Either::B( resp.into_body() .map_err(Error::from) - .for_each(move |chunk| { - output.write_all(&chunk)?; - Ok(()) + .fold(output, move |mut acc, chunk| { + acc.write_all(&chunk)?; + Ok::<_, Error>(acc) }) ) }