1use proc_macro::TokenStream;
2use syn::{parse_macro_input, DeriveInput};
3
4mod from;
5mod into;
6
7#[proc_macro_derive(IntoTokens)]
10pub fn derive_into_tokens(tokens: TokenStream) -> TokenStream {
11 let input = parse_macro_input!(tokens as DeriveInput);
12
13 match into::into_tokens(&input) {
14 Ok(output) => output,
15 Err(err) => err.into_compile_error().into(),
16 }
17}
18
19#[proc_macro_derive(FromTokens)]
25pub fn derive_from_tokens(tokens: TokenStream) -> TokenStream {
26 let input = parse_macro_input!(tokens as DeriveInput);
27
28 match from::from_tokens(&input) {
29 Ok(output) => output,
30 Err(err) => err.into_compile_error().into(),
31 }
32}