aboutsummaryrefslogtreecommitdiff
path: root/derive-macro/src/handle_struct.rs
diff options
context:
space:
mode:
authorAlexander van Ratingen <470642+alvra@users.noreply.github.com>2022-04-21 22:16:02 +0200
committerAlexander van Ratingen <470642+alvra@users.noreply.github.com>2022-04-21 22:16:02 +0200
commit645d3f8d22136d58d65f034fc15ea748d751eb96 (patch)
treebf55549077f17e9167194f6cb21fed41ec30ba03 /derive-macro/src/handle_struct.rs
downloadgenerate-random-645d3f8d22136d58d65f034fc15ea748d751eb96.tar.xz
Initial commit
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
+ }
+ }
+ }
+}