1mod isomorphism;
2mod reflica;
3
4use proc_macro2::{Span, TokenStream};
5use quote::{quote, ToTokens};
6use syn::{self, spanned::Spanned, Data, DeriveInput, Error, Expr, Fields, Ident, Result};
7
8
9#[proc_macro_derive(Isomorphism, attributes(isomorphism, into_field, from_variant, name, into, restore))]
11pub fn isomorphsim_macro_derive(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
12 let ast = syn::parse(input).unwrap();
13
14 isomorphism::impl_isomorphism_macro(&ast)
15 .unwrap_or_else(|err| err.to_compile_error())
16 .into()
17}
18
19
20#[proc_macro_derive(Reflica, attributes(reflica))]
22pub fn reflica_macro_derive(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
23 let ast = syn::parse(input).unwrap();
24
25 reflica::impl_reflica_macro(&ast)
26 .unwrap_or_else(|err| err.to_compile_error())
27 .into()
28}