diff options
Diffstat (limited to 'derive-macro')
-rw-r--r-- | derive-macro/src/handle_enum.rs | 10 | ||||
-rw-r--r-- | derive-macro/src/handle_struct.rs | 2 | ||||
-rw-r--r-- | derive-macro/src/lib.rs | 15 |
3 files changed, 18 insertions, 9 deletions
diff --git a/derive-macro/src/handle_enum.rs b/derive-macro/src/handle_enum.rs index b2b14c0..8165ab5 100644 --- a/derive-macro/src/handle_enum.rs +++ b/derive-macro/src/handle_enum.rs @@ -1,19 +1,23 @@ +use super::generate_fields; use proc_macro2::{Ident, Literal, TokenStream}; use quote::quote; use syn::{DataEnum, Variant}; -use super::generate_fields; fn variant_weight(variant: &Variant) -> Literal { for attr in variant.attrs.iter() { if attr.path.is_ident("weight") { - return attr.parse_args::<Literal>().expect("expected literal for `#[weight(...)]`") + return attr + .parse_args::<Literal>() + .expect("expected literal for `#[weight(...)]`"); } } Literal::u64_suffixed(1) } pub fn generate(name: &Ident, ty: DataEnum) -> TokenStream { - let mut variant_weights = ty.variants.into_iter() + let mut variant_weights = ty + .variants + .into_iter() .map(|variant| (variant_weight(&variant), variant)); let mut arms = TokenStream::new(); diff --git a/derive-macro/src/handle_struct.rs b/derive-macro/src/handle_struct.rs index 988bd06..e5f05aa 100644 --- a/derive-macro/src/handle_struct.rs +++ b/derive-macro/src/handle_struct.rs @@ -1,7 +1,7 @@ +use super::generate_fields; use proc_macro2::{Ident, TokenStream}; use quote::quote; use syn::DataStruct; -use super::generate_fields; pub fn generate(name: &Ident, ty: DataStruct) -> TokenStream { let fields = generate_fields(ty.fields); diff --git a/derive-macro/src/lib.rs b/derive-macro/src/lib.rs index 9aa93f5..8c77e61 100644 --- a/derive-macro/src/lib.rs +++ b/derive-macro/src/lib.rs @@ -2,10 +2,10 @@ //! that implements the trait of the same name from the `generate-random` crate. //! Refer to the documentation of that crate for more information. -use syn::{DeriveInput, Data, Fields}; +use syn::{Data, DeriveInput, Fields}; -mod handle_struct; mod handle_enum; +mod handle_struct; #[proc_macro_derive(GenerateRandom, attributes(weight))] pub fn derive_generate_random(input: proc_macro::TokenStream) -> proc_macro::TokenStream { @@ -14,14 +14,17 @@ pub fn derive_generate_random(input: proc_macro::TokenStream) -> proc_macro::Tok Data::Struct(ty) => handle_struct::generate(&input.ident, ty), Data::Enum(ty) => handle_enum::generate(&input.ident, ty), Data::Union(_) => panic!("Unions are not supported"), - }.into() + } + .into() } fn generate_fields(fields: Fields) -> proc_macro2::TokenStream { use quote::quote; match fields { Fields::Named(fields) => { - let fields = fields.named.into_iter() + let fields = fields + .named + .into_iter() .map(|field| { let field = field.ident.unwrap(); quote! { @@ -32,7 +35,9 @@ fn generate_fields(fields: Fields) -> proc_macro2::TokenStream { quote! { { #fields } } } Fields::Unnamed(fields) => { - let fields = fields.unnamed.into_iter() + let fields = fields + .unnamed + .into_iter() .map(|_field| { quote! { generate_random::GenerateRandom::generate_random(rng), |