overrideGetterSetter/
lib.rs

1#![allow(dead_code)]
2
3extern crate proc_macro;
4#[macro_use]
5extern crate quote;
6extern crate syn;
7
8use proc_macro::TokenStream;
9
10#[proc_macro_derive(getters)]
11pub fn derive_getters(input: TokenStream) -> TokenStream {
12    let ast = syn::parse_macro_input(&input.to_string()).unwrap();
13    let expanded = expand_getters(ast);
14    println!("Expanded getters : {}", expanded.to_string());
15    expanded.to_string().parse().unwrap()
16}
17
18fn expand_getters(mut ast: syn::MacroInput) -> quote::Tokens {
19     //println!("Defining getters for: {:#?}", ast);
20
21    quote! {
22        #ast
23    }
24}
25
26#[proc_macro_derive(setters)]
27pub fn derive_setters(input: TokenStream) -> TokenStream {
28    let ast = syn::parse_macro_input(&input.to_string()).unwrap();
29    let expanded = expand_setters(ast);
30    println!("Expanded setters : {}", expanded.to_string());
31    expanded.to_string().parse().unwrap()
32}
33
34fn expand_setters(mut ast: syn::MacroInput) -> quote::Tokens {
35     //println!("Defining setters for: {:#?}", ast);
36
37    quote! {
38        #ast
39    }
40}