diff options
author | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-05-21 11:57:15 +0200 |
---|---|---|
committer | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-05-21 11:57:15 +0200 |
commit | 5bb1ae788da3a3fb598a4bd19be6b70d816b6f8c (patch) | |
tree | d47eb9106589b64e0d1784b6d57a5c2abb4dcddf | |
parent | 1d2774004c4e3ad9fac3bf0bae9593e70ff11655 (diff) |
generate annotation field identifiers correctly
-rw-r--r-- | src/lib.rs | 10 |
1 files changed, 7 insertions, 3 deletions
@@ -2,7 +2,7 @@ use std::collections::HashMap; use darling::FromAttributes; use proc_macro::TokenStream; -use proc_macro2::TokenStream as TokenStream2; +use proc_macro2::{Ident, Span, TokenStream as TokenStream2}; use quote::quote; use syn::{parse, ItemStruct}; @@ -27,18 +27,22 @@ pub fn derive_serialize(item: TokenStream) -> TokenStream { let args = Args::from_attributes(&field.attrs).unwrap(); if let Some(attr) = args.len_for { + let attr_ident = Ident::new(&attr, Span::call_site()); + out.extend( vec![quote!( - self.#attr.len().serialize(w)?; + self.#attr_ident.len().serialize(w)?; )] .into_iter(), ); } if let Some(attr) = args.discriminant_for { + let attr_ident = Ident::new(&attr, Span::call_site()); + out.extend( vec![quote!( - self.#attr.discriminant().serialize(w)?; + self.#attr_ident.discriminant().serialize(w)?; )] .into_iter(), ); |