diff options
author | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-07-25 09:43:39 +0200 |
---|---|---|
committer | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-07-25 09:43:39 +0200 |
commit | 50a07f1d50a69d42b1061b205496b7c7aa100915 (patch) | |
tree | 69c2aea9e0400d09460c4dce617fe39ac227a836 | |
parent | 4ee1465c29f5cb807e250dc3fcfb9f0f3616f4da (diff) |
convert len_for offset integer type for successful arithmetic operations
-rw-r--r-- | src/lib.rs | 7 |
1 files changed, 4 insertions, 3 deletions
@@ -23,7 +23,7 @@ struct DiscriminantArgs { #[derive(Debug, Default, FromMeta)] struct LenArgs { field: String, - offset: u16, + offset: u8, data_type: String, } @@ -53,10 +53,11 @@ pub fn derive_serialize(item: TokenStream) -> TokenStream { if let Some(attr) = args.len_for { let field_ident = Ident::new(&attr.field, Span::call_site()); let offset = attr.offset; + let data_type_ident = Ident::new(&attr.data_type, Span::call_site()); out.extend( vec![quote!( - (self.#field_ident.len() + #offset).serialize(w)?; + (self.#field_ident.len() + #data_type_ident::from(#offset)).serialize(w)?; )] .into_iter(), ); @@ -157,7 +158,7 @@ pub fn derive_deserialize(item: TokenStream) -> TokenStream { let mut len = #data_type_ident::default(); len.deserialize(r)?; - len_for.insert(#field, len - #offset); + len_for.insert(#field, len - #data_type_ident::from(#offset)); )] .into_iter(), ); |