diff options
-rw-r--r-- | src/lib.rs | 7 |
1 files changed, 6 insertions, 1 deletions
@@ -2,7 +2,7 @@ use std::collections::HashMap; use darling::{FromAttributes, FromMeta}; use proc_macro::TokenStream; -use proc_macro2::{Ident, Span, TokenStream as TokenStream2}; +use proc_macro2::{Ident, Punct, Spacing, Span, TokenStream as TokenStream2, TokenTree}; use quote::quote; use syn::{parse, ItemStruct}; @@ -167,6 +167,7 @@ pub fn derive_deserialize(item: TokenStream) -> TokenStream { } if len_for.contains_key(&field_name.to_string()) { + out.extend([TokenTree::Punct(Punct::new('{', Spacing::Alone))].into_iter()); out.extend( vec![quote!( let r = &mut r.take(*len_for.get(#field_name_string).unwrap() as u64); @@ -192,6 +193,10 @@ pub fn derive_deserialize(item: TokenStream) -> TokenStream { ); } + if len_for.contains_key(&field_name.to_string()) { + out.extend([TokenTree::Punct(Punct::new('}', Spacing::Alone))].into_iter()); + } + out }); |