aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHimbeerserverDE <himbeerserverde@gmail.com>2023-05-21 11:57:15 +0200
committerHimbeerserverDE <himbeerserverde@gmail.com>2023-05-21 11:57:15 +0200
commit5bb1ae788da3a3fb598a4bd19be6b70d816b6f8c (patch)
treed47eb9106589b64e0d1784b6d57a5c2abb4dcddf
parent1d2774004c4e3ad9fac3bf0bae9593e70ff11655 (diff)
generate annotation field identifiers correctly
-rw-r--r--src/lib.rs10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 26e795b..f087b77 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -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(),
);