aboutsummaryrefslogtreecommitdiff
path: root/derive-macro/src/handle_struct.rs
blob: e5f05aaf6275a94f15a0742dbf06fbe71801250c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
use super::generate_fields;
use proc_macro2::{Ident, TokenStream};
use quote::quote;
use syn::DataStruct;

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
            }
        }
    }
}