derive_more_impl/
add_helpers.rs1use proc_macro2::TokenStream;
2use quote::quote;
3use syn::{Field, Ident, Index};
4
5pub fn tuple_exprs(fields: &[&Field], method_ident: &Ident) -> Vec<TokenStream> {
6 let mut exprs = vec![];
7
8 for i in 0..fields.len() {
9 let i = Index::from(i);
10 let expr = quote! { self.#i.#method_ident(rhs.#i) };
12 exprs.push(expr);
13 }
14 exprs
15}
16
17pub fn struct_exprs(fields: &[&Field], method_ident: &Ident) -> Vec<TokenStream> {
18 let mut exprs = vec![];
19
20 for field in fields {
21 let field_id = field.ident.as_ref().unwrap();
23 let expr = quote! { self.#field_id.#method_ident(rhs.#field_id) };
25 exprs.push(expr)
26 }
27 exprs
28}