From 766ede965e33630eff3185dcb14e967acd518a81 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Thu, 12 Jan 2017 21:52:56 -0800 Subject: [PATCH] Eliminate collects in codegen for deserializing map --- serde_codegen/src/de.rs | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/serde_codegen/src/de.rs b/serde_codegen/src/de.rs index 1aa39a02..2b94cc2f 100644 --- a/serde_codegen/src/de.rs +++ b/serde_codegen/src/de.rs @@ -744,21 +744,20 @@ fn deserialize_map( } // Create the field names for the fields. - let fields_names = fields.iter() + let fields_names: Vec<_> = fields.iter() .enumerate() .map(|(i, field)| (field, field_i(i))) - .collect::>(); + .collect(); // Declare each field that will be deserialized. - let let_values: Vec<_> = fields_names.iter() + let let_values = fields_names.iter() .filter(|&&(field, _)| !field.attrs.skip_deserializing()) .map(|&(field, ref name)| { let field_ty = &field.ty; quote! { let mut #name: Option<#field_ty> = None; } - }) - .collect(); + }); // Match arms to extract a value for a field. let value_arms = fields_names.iter() @@ -791,8 +790,7 @@ fn deserialize_map( #name = Some(#visit); } } - }) - .collect::>(); + }); // Match arms to ignore value for fields that have `skip_deserializing`. // Ignored even if `deny_unknown_fields` is set. @@ -804,8 +802,7 @@ fn deserialize_map( let _ = try!(visitor.visit_value::<_serde::de::impls::IgnoredAny>()); } } - }) - .collect::>(); + }); // Visit ignored values to consume them let ignored_arm = if item_attrs.deny_unknown_fields() { @@ -827,8 +824,7 @@ fn deserialize_map( None => #missing_expr }; } - }) - .collect::>(); + }); let result = fields_names.iter() .map(|&(field, ref name)| {