aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHimbeerserverDE <himbeerserverde@gmail.com>2023-07-25 09:43:39 +0200
committerHimbeerserverDE <himbeerserverde@gmail.com>2023-07-25 09:43:39 +0200
commit50a07f1d50a69d42b1061b205496b7c7aa100915 (patch)
tree69c2aea9e0400d09460c4dce617fe39ac227a836
parent4ee1465c29f5cb807e250dc3fcfb9f0f3616f4da (diff)
convert len_for offset integer type for successful arithmetic operations
-rw-r--r--src/lib.rs7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/lib.rs b/src/lib.rs
index c8c074e..07eb699 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -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(),
);