Macros 1.1

This commit is contained in:
David Tolnay
2016-08-28 22:19:17 -07:00
parent 7014c105b4
commit d914fdf67b
6 changed files with 148 additions and 37 deletions
+20
View File
@@ -0,0 +1,20 @@
#![feature(rustc_macro)]
extern crate rustc_macro;
extern crate serde_codegen;
use rustc_macro::TokenStream;
#[rustc_macro_derive(Serialize)]
pub fn derive_serialize(input: TokenStream) -> TokenStream {
let item = format!("#[derive(Serialize)]\n{}", input);
let expanded = serde_codegen::expand_str(&item).unwrap();
expanded.parse().unwrap()
}
#[rustc_macro_derive(Deserialize)]
pub fn derive_deserialize(input: TokenStream) -> TokenStream {
let item = format!("#[derive(Deserialize)]\n{}", input);
let expanded = serde_codegen::expand_str(&item).unwrap();
expanded.parse().unwrap()
}