seoul_derive/
lib.rs

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/// # `Isomorphism`
10#[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/// # `Reflica`
21#[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}