diff options
Diffstat (limited to 'derive/src/network/mod.rs')
| -rw-r--r-- | derive/src/network/mod.rs | 35 |
1 files changed, 17 insertions, 18 deletions
diff --git a/derive/src/network/mod.rs b/derive/src/network/mod.rs index aea8080..da8e718 100644 --- a/derive/src/network/mod.rs +++ b/derive/src/network/mod.rs @@ -61,6 +61,12 @@ pub struct NetworkField { /// Skips this field when serializing to network representation #[darling(default)] skip: bool, + + /// Special reprensentation case for NetworkMap maplist repr + /// in which case if the field is a String a StringList will be used instead of a VariantList + /// this cannot be switched with variant as that leads to collisions with the other network representations + #[darling(default)] + stringlist: bool, } fn parse_fields(input: &syn::DeriveInput) -> Vec<NetworkField> { @@ -85,14 +91,11 @@ pub fn network_map(input: proc_macro::TokenStream) -> proc_macro::TokenStream { let mut fields = parse_fields(&input); let quassel_fields = super::QuasselField::parse(&input); - fields - .iter_mut() - .zip(quassel_fields) - .for_each(|(field, qfield)| { - if field.rename.is_none() { - field.rename = qfield.name - } - }); + fields.iter_mut().zip(quassel_fields).for_each(|(field, qfield)| { + if field.rename.is_none() { + field.rename = qfield.name + } + }); let name = &input.ident; @@ -171,14 +174,11 @@ pub fn network_list(input: proc_macro::TokenStream) -> proc_macro::TokenStream { let mut fields = parse_fields(&input); let quassel_fields = super::QuasselField::parse(&input); - fields - .iter_mut() - .zip(quassel_fields) - .for_each(|(field, qfield)| { - if field.rename.is_none() { - field.rename = qfield.name - } - }); + fields.iter_mut().zip(quassel_fields).for_each(|(field, qfield)| { + if field.rename.is_none() { + field.rename = qfield.name + } + }); let name = &input.ident; @@ -227,8 +227,7 @@ fn gen_type(typ: &str) -> syn::Type { path: syn::Path { leading_colon: None, segments: { - let mut res = - syn::punctuated::Punctuated::<syn::PathSegment, syn::token::Colon2>::new(); + let mut res = syn::punctuated::Punctuated::<syn::PathSegment, syn::token::Colon2>::new(); res.push(syn::PathSegment { ident: syn::Ident::new(typ, proc_macro2::Span::call_site()), |
