extern crate proc_macro;
mod expand;
use proc_macro::TokenStream;
use quote::quote;
use syn::parse::Nothing;
use syn::{parse_macro_input, DeriveInput};
#[proc_macro_attribute]
pub fn embed(args: TokenStream, tokens: TokenStream) -> TokenStream {
let original = tokens.clone();
parse_macro_input!(args as Nothing);
let input = parse_macro_input!(tokens as DeriveInput);
expand::embed(input)
.unwrap_or_else(|e| {
let original = proc_macro2::TokenStream::from(original);
let compile_error = e.to_compile_error();
quote! {
#original
#compile_error
}
})
.into()
}