aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHimbeerserverDE <himbeerserverde@gmail.com>2023-07-23 19:23:34 +0200
committerHimbeerserverDE <himbeerserverde@gmail.com>2023-07-23 19:23:34 +0200
commit61418b7c9c62c0d8bac2ea494f742019ae037341 (patch)
treee0f5ca0876757d94112936f3883f9e705375798c
parentcafe8651c31b0f794b250c4a8618d6500e507557 (diff)
Revert "support custom discriminant types"
This reverts commit cafe8651c31b0f794b250c4a8618d6500e507557.
-rw-r--r--src/lib.rs23
1 files changed, 7 insertions, 16 deletions
diff --git a/src/lib.rs b/src/lib.rs
index ff31ef9..4e9a23d 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -1,6 +1,6 @@
use std::collections::HashMap;
-use darling::{FromAttributes, FromMeta};
+use darling::FromAttributes;
use proc_macro::TokenStream;
use proc_macro2::{Ident, Span, TokenStream as TokenStream2};
use quote::quote;
@@ -11,13 +11,7 @@ use syn::{parse, ItemStruct};
#[darling(default)]
struct Args {
len_for: Option<String>,
- discriminant_for: Option<DiscriminantArgs>,
-}
-
-#[derive(Debug, Default, FromMeta)]
-struct DiscriminantArgs {
- field: String,
- data_type: String,
+ discriminant_for: Option<String>,
}
#[proc_macro_derive(Serialize, attributes(ppproperly))]
@@ -33,11 +27,11 @@ pub fn derive_serialize(item: TokenStream) -> TokenStream {
let args = Args::from_attributes(&field.attrs).unwrap();
if let Some(attr) = args.discriminant_for {
- let field_ident = Ident::new(&attr.field, Span::call_site());
+ let attr_ident = Ident::new(&attr, Span::call_site());
out.extend(
vec![quote!(
- self.#field_ident.discriminant().serialize(w)?;
+ self.#attr_ident.discriminant().serialize(w)?;
)]
.into_iter(),
);
@@ -123,20 +117,17 @@ pub fn derive_deserialize(item: TokenStream) -> TokenStream {
let args = Args::from_attributes(&field.attrs).unwrap();
if let Some(attr) = args.discriminant_for {
- let field = attr.field;
- let data_type = attr.data_type;
-
out.extend(
vec![quote!(
- let mut discriminant = #data_type::default();
+ let mut discriminant = 0u8;
discriminant.deserialize(r)?;
- discriminant_for.insert(#field, discriminant);
+ discriminant_for.insert(#attr, discriminant);
)]
.into_iter(),
);
- discriminant_for.insert(field, ());
+ discriminant_for.insert(attr, ());
}
if let Some(attr) = args.len_for {