diff options
author | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-07-25 09:34:55 +0200 |
---|---|---|
committer | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-07-25 09:34:55 +0200 |
commit | 4ee1465c29f5cb807e250dc3fcfb9f0f3616f4da (patch) | |
tree | 45c4f2a8b5dae6069a9452493f26fccca07a6808 | |
parent | 19f49c968fb5073b00c565a0bdfa060363e643ad (diff) |
support different sizes for length field
-rw-r--r-- | src/lib.rs | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -24,6 +24,7 @@ struct DiscriminantArgs { struct LenArgs { field: String, offset: u16, + data_type: String, } #[proc_macro_derive(Serialize, attributes(ppproperly))] @@ -149,10 +150,11 @@ pub fn derive_deserialize(item: TokenStream) -> TokenStream { if let Some(attr) = args.len_for { let field = attr.field; let offset = attr.offset; + let data_type_ident = Ident::new(&attr.data_type, Span::call_site()); out.extend( vec![quote!( - let mut len = 0u16; + let mut len = #data_type_ident::default(); len.deserialize(r)?; len_for.insert(#field, len - #offset); |