switch from vecs to iterator chains

This commit is contained in:
Tom Dohrmann
2020-02-10 11:51:41 +01:00
committed by Ryan Leckey
parent 4cd179d42b
commit 7185f1ff25
2 changed files with 15 additions and 19 deletions

View File

@@ -2,7 +2,6 @@ use super::attributes::{
check_strong_enum_attributes, check_struct_attributes, check_transparent_attributes,
check_weak_enum_attributes, parse_attributes,
};
use proc_macro2::Ident;
use quote::quote;
use syn::punctuated::Punctuated;
use syn::token::Comma;
@@ -161,16 +160,15 @@ fn expand_derive_decode_struct(
}
let (impl_generics, _, where_clause) = generics.split_for_impl();
let mut reads: Vec<Stmt> = Vec::new();
let mut names: Vec<Ident> = Vec::new();
for field in fields {
let reads = fields.iter().map(|field| -> Stmt {
let id = &field.ident;
names.push(id.clone().unwrap());
let ty = &field.ty;
reads.push(parse_quote!(
parse_quote!(
let #id = sqlx::postgres::decode_struct_field::<#ty>(&mut buf)?;
));
}
)
});
let names = fields.iter().map(|field| &field.ident);
tts.extend(quote!(
impl #impl_generics sqlx::decode::Decode<sqlx::Postgres> for #ident#ty_generics #where_clause {

View File

@@ -160,22 +160,20 @@ fn expand_derive_encode_struct(
}
let (impl_generics, _, where_clause) = generics.split_for_impl();
let mut writes: Vec<Stmt> = Vec::new();
for field in fields {
let writes = fields.iter().map(|field| -> Stmt {
let id = &field.ident;
writes.push(parse_quote!(
parse_quote!(
sqlx::postgres::encode_struct_field(buf, &self. #id);
));
}
)
});
let mut sizes: Vec<Expr> = Vec::new();
for field in fields {
let sizes = fields.iter().map(|field| -> Expr {
let id = &field.ident;
let ty = &field.ty;
sizes.push(
parse_quote!(<#ty as sqlx::encode::Encode<sqlx::Postgres>>::size_hint(&self. #id)),
);
}
parse_quote!(
<#ty as sqlx::encode::Encode<sqlx::Postgres>>::size_hint(&self. #id)
)
});
tts.extend(quote!(
impl #impl_generics sqlx::encode::Encode<sqlx::Postgres> for #ident #ty_generics #where_clause {