aboutsummaryrefslogtreecommitdiff
path: root/derive-macro/src/handle_struct.rs
blob: 988bd06a09cb58bcd711cd3be63b0678217d461b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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);
    quote! {
        impl generate_random::GenerateRandom for #name {
            fn generate_random<R: rand::Rng + ?Sized>(rng: &mut R) -> Self {
                Self #fields
            }
        }
    }
}