aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHimbeerserverDE <himbeerserverde@gmail.com>2023-07-25 09:34:55 +0200
committerHimbeerserverDE <himbeerserverde@gmail.com>2023-07-25 09:34:55 +0200
commit4ee1465c29f5cb807e250dc3fcfb9f0f3616f4da (patch)
tree45c4f2a8b5dae6069a9452493f26fccca07a6808
parent19f49c968fb5073b00c565a0bdfa060363e643ad (diff)
support different sizes for length field
-rw-r--r--src/lib.rs4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 681d9f1..c8c074e 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -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);