2016-10-08 18:29:36 -04:00
|
|
|
#![feature(proc_macro, proc_macro_lib)]
|
2016-09-01 21:28:40 -07:00
|
|
|
#![cfg(not(test))]
|
2016-08-28 22:19:17 -07:00
|
|
|
|
2016-10-08 18:29:36 -04:00
|
|
|
extern crate proc_macro;
|
2016-08-28 22:19:17 -07:00
|
|
|
extern crate serde_codegen;
|
|
|
|
|
2016-10-08 18:29:36 -04:00
|
|
|
use proc_macro::TokenStream;
|
2016-08-28 22:19:17 -07:00
|
|
|
|
2016-10-08 18:29:36 -04:00
|
|
|
#[proc_macro_derive(Serialize)]
|
2016-08-28 22:19:17 -07:00
|
|
|
pub fn derive_serialize(input: TokenStream) -> TokenStream {
|
|
|
|
let item = format!("#[derive(Serialize)]\n{}", input);
|
2016-09-27 00:11:37 -07:00
|
|
|
match serde_codegen::expand_single_item(&item) {
|
|
|
|
Ok(expanded) => expanded.parse().unwrap(),
|
|
|
|
Err(msg) => panic!(msg),
|
|
|
|
}
|
2016-08-28 22:19:17 -07:00
|
|
|
}
|
|
|
|
|
2016-10-08 18:29:36 -04:00
|
|
|
#[proc_macro_derive(Deserialize)]
|
2016-08-28 22:19:17 -07:00
|
|
|
pub fn derive_deserialize(input: TokenStream) -> TokenStream {
|
|
|
|
let item = format!("#[derive(Deserialize)]\n{}", input);
|
2016-09-27 00:11:37 -07:00
|
|
|
match serde_codegen::expand_single_item(&item) {
|
|
|
|
Ok(expanded) => expanded.parse().unwrap(),
|
|
|
|
Err(msg) => panic!(msg),
|
|
|
|
}
|
2016-08-28 22:19:17 -07:00
|
|
|
}
|