22 lines
647 B
Rust
Raw Normal View History

2016-08-30 23:55:08 -07:00
#![feature(rustc_macro, rustc_macro_lib)]
2016-09-01 21:28:40 -07:00
#![cfg(not(test))]
2016-08-28 22:19:17 -07:00
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);
2016-09-10 21:53:14 -07:00
let expanded = serde_codegen::expand_single_item(&item);
2016-08-28 22:19:17 -07:00
expanded.parse().unwrap()
}
#[rustc_macro_derive(Deserialize)]
pub fn derive_deserialize(input: TokenStream) -> TokenStream {
let item = format!("#[derive(Deserialize)]\n{}", input);
2016-09-10 21:53:14 -07:00
let expanded = serde_codegen::expand_single_item(&item);
2016-08-28 22:19:17 -07:00
expanded.parse().unwrap()
}