read-only-derive 0.1.0

Proc-macro support crate for read-only
Documentation
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()
}