Use FutureFrom instead of TryFrom for responses.

This commit is contained in:
Jimmy Cuadra 2017-05-14 04:11:35 -07:00
parent 1a56b35f17
commit c55c71dd56

View File

@ -50,7 +50,7 @@ impl ToTokens for Api {
let mut tokens = Tokens::new(); let mut tokens = Tokens::new();
tokens.append(quote! { tokens.append(quote! {
hyper_response.body() let future_response = hyper_response.body()
.fold::<_, _, Result<_, ::std::io::Error>>(Vec::new(), |mut bytes, chunk| { .fold::<_, _, Result<_, ::std::io::Error>>(Vec::new(), |mut bytes, chunk| {
bytes.write_all(&chunk)?; bytes.write_all(&chunk)?;
@ -79,7 +79,7 @@ impl ToTokens for Api {
}; };
let mut closure_end = Tokens::new(); let mut closure_end = Tokens::new();
closure_end.append("})"); closure_end.append("});");
let response_init_fields = if self.response.has_fields() { let response_init_fields = if self.response.has_fields() {
self.response.init_fields() self.response.init_fields()
@ -119,10 +119,12 @@ impl ToTokens for Api {
#response_types #response_types
impl ::std::convert::TryFrom<::hyper::Response> for Response { impl ::futures::future::FutureFrom<::hyper::Response> for Response {
type Future = Box<_Future<Item = Self, Error = Self::Error>>;
type Error = ::ruma_api::Error; type Error = ::ruma_api::Error;
fn try_from(hyper_response: ::hyper::Response) -> Result<Self, Self::Error> { fn future_from(hyper_response: ::hyper::Response)
-> Box<_Future<Item = Self, Error = Self::Error>> {
#deserialize_response_body #deserialize_response_body
let response = Response { let response = Response {
@ -131,7 +133,8 @@ impl ToTokens for Api {
Ok(response) Ok(response)
#closure_end #closure_end
.wait()
Box::new(future_response)
} }
} }