aboutsummaryrefslogtreecommitdiff
path: root/derive-macro/src/handle_struct.rs
diff options
context:
space:
mode:
Diffstat (limited to 'derive-macro/src/handle_struct.rs')
-rw-r--r--derive-macro/src/handle_struct.rs15
1 files changed, 15 insertions, 0 deletions
diff --git a/derive-macro/src/handle_struct.rs b/derive-macro/src/handle_struct.rs
new file mode 100644
index 0000000..988bd06
--- /dev/null
+++ b/derive-macro/src/handle_struct.rs
@@ -0,0 +1,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
+ }
+ }
+ }
+}