Macros 1.1

This commit is contained in:
David Tolnay committed 2016-08-28 22:21:25 -07:00
1 parent 7014c105b4
commit d914fdf67b
6 files changed
+148 -37

No files matched your search

+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()
}