ruma_client_api: Simplify Response::init_fields

This commit is contained in:
Jonas Platte 2020-01-06 12:20:48 +01:00
parent af7333203a
commit b6394a32b7
No known key found for this signature in database
GPG Key ID: 7D261D771D915378

View File

@ -35,21 +35,18 @@ impl Response {
/// Produces code for a response struct initializer. /// Produces code for a response struct initializer.
pub fn init_fields(&self) -> TokenStream { pub fn init_fields(&self) -> TokenStream {
let fields = self.fields.iter().map(|response_field| match response_field { let fields = self.fields.iter().map(|response_field| {
ResponseField::Body(field) => { let field = response_field.field();
let field_name = let field_name = field.ident.as_ref().expect("expected field to have an identifier");
field.ident.as_ref().expect("expected field to have an identifier");
let span = field.span(); let span = field.span();
match response_field {
ResponseField::Body(_) => {
quote_spanned! {span=> quote_spanned! {span=>
#field_name: response_body.#field_name #field_name: response_body.#field_name
} }
} }
ResponseField::Header(field, header_name) => { ResponseField::Header(_, header_name) => {
let field_name =
field.ident.as_ref().expect("expected field to have an identifier");
let span = field.span();
quote_spanned! {span=> quote_spanned! {span=>
#field_name: headers.remove(ruma_api::exports::http::header::#header_name) #field_name: headers.remove(ruma_api::exports::http::header::#header_name)
.expect("response missing expected header") .expect("response missing expected header")
@ -58,15 +55,12 @@ impl Response {
.to_owned() .to_owned()
} }
} }
ResponseField::NewtypeBody(field) => { ResponseField::NewtypeBody(_) => {
let field_name =
field.ident.as_ref().expect("expected field to have an identifier");
let span = field.span();
quote_spanned! {span=> quote_spanned! {span=>
#field_name: response_body.0 #field_name: response_body.0
} }
} }
}
}); });
quote! { quote! {