1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
use proc_macro::TokenStream;

mod result;

#[proc_macro_derive(FromResult)]
pub fn derive_from_result(input: TokenStream) -> TokenStream {
    let input = syn::parse_macro_input!(input as syn::DeriveInput);

    match result::derive(&input) {
        Ok(ts) => ts.into(),
        Err(e) => e.to_compile_error().into(),
    }
}