diff options
author | Melody Horn / boringcactus <melody@boringcactus.com> | 2021-06-13 16:33:46 -0600 |
---|---|---|
committer | Melody Horn / boringcactus <melody@boringcactus.com> | 2021-06-13 16:33:46 -0600 |
commit | 311b49a2fdd97b8b870dbaccccb55058ee0207c8 (patch) | |
tree | 1ca431733526cac1c7c2f7f1bfda7324ae088d50 /tosin-macros/src | |
parent | cc7d316e588c21de1023d6a76d4ea5e7b893977a (diff) | |
download | tosin-311b49a2fdd97b8b870dbaccccb55058ee0207c8.tar.gz tosin-311b49a2fdd97b8b870dbaccccb55058ee0207c8.zip |
lay groundwork for models
Diffstat (limited to 'tosin-macros/src')
-rw-r--r-- | tosin-macros/src/lib.rs | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/tosin-macros/src/lib.rs b/tosin-macros/src/lib.rs new file mode 100644 index 0000000..c0651fa --- /dev/null +++ b/tosin-macros/src/lib.rs @@ -0,0 +1,26 @@ +extern crate proc_macro; + +use proc_macro::TokenStream; +use quote::quote; + +#[proc_macro_derive(Model, attributes(model))] +pub fn model_derive(input: TokenStream) -> TokenStream { + // Construct a representation of Rust code as a syntax tree + // that we can manipulate + let ast = syn::parse(input).unwrap(); + + // Build the trait implementation + impl_model(&ast) +} + +fn impl_model(ast: &syn::DeriveInput) -> TokenStream { + let name = &ast.ident; + let gen = quote! { + impl #name { + fn hello_macro() { + println!("Hello, Macro! My name is {}!", stringify!(#name)); + } + } + }; + gen.into() +} |