1mod helpers;
5
6use proc_macro::TokenStream;
7use quote::quote;
8use syn::{parse_macro_input, DeriveInput};
9
10#[proc_macro_derive(NtList)]
11pub fn derive_nt_list(input: TokenStream) -> TokenStream {
12 let input = parse_macro_input!(input as DeriveInput);
13 helpers::derive_list_enum_trait(input, "NtList", quote! {::nt_list::list::NtList})
14 .unwrap_or_else(|e| e.to_compile_error())
15 .into()
16}
17
18#[proc_macro_derive(NtListElement, attributes(boxed))]
19pub fn derive_nt_list_element(input: TokenStream) -> TokenStream {
20 let input = parse_macro_input!(input as DeriveInput);
21 helpers::derive_list_struct_trait(input)
22 .unwrap_or_else(|e| e.to_compile_error())
23 .into()
24}
25
26#[proc_macro_derive(NtSingleList)]
27pub fn derive_nt_single_list(input: TokenStream) -> TokenStream {
28 let input = parse_macro_input!(input as DeriveInput);
29 helpers::derive_list_enum_trait(
30 input,
31 "NtSingleList",
32 quote! {::nt_list::single_list::NtSingleList},
33 )
34 .unwrap_or_else(|e| e.to_compile_error())
35 .into()
36}