1mod seam_procedure;
4mod seam_subscription;
5mod seam_type;
6
7use proc_macro::TokenStream;
8
9#[proc_macro_derive(SeamType)]
10pub fn derive_seam_type(input: TokenStream) -> TokenStream {
11 let input = syn::parse_macro_input!(input as syn::DeriveInput);
12 match seam_type::expand(input) {
13 Ok(tokens) => tokens.into(),
14 Err(e) => e.to_compile_error().into(),
15 }
16}
17
18#[proc_macro_attribute]
19pub fn seam_procedure(attr: TokenStream, item: TokenStream) -> TokenStream {
20 let attr = proc_macro2::TokenStream::from(attr);
21 let item = syn::parse_macro_input!(item as syn::ItemFn);
22 match seam_procedure::expand(attr, item) {
23 Ok(tokens) => tokens.into(),
24 Err(e) => e.to_compile_error().into(),
25 }
26}
27
28#[proc_macro_attribute]
29pub fn seam_subscription(attr: TokenStream, item: TokenStream) -> TokenStream {
30 let attr = proc_macro2::TokenStream::from(attr);
31 let item = syn::parse_macro_input!(item as syn::ItemFn);
32 match seam_subscription::expand(attr, item) {
33 Ok(tokens) => tokens.into(),
34 Err(e) => e.to_compile_error().into(),
35 }
36}