1mod attributes;
17mod error;
18mod proc_macros;
19mod util;
20
21#[proc_macro_attribute]
22pub fn protobuf_service(
23 _args: proc_macro::TokenStream,
24 input: proc_macro::TokenStream,
25) -> proc_macro::TokenStream {
26 let input = syn::parse_macro_input!(
27 input as <crate::proc_macros::ProtobufService as crate::util::ProcMacro>::Input
28 );
29
30 let impl_span = input.impl_token.span;
31
32 match <crate::proc_macros::ProtobufService as crate::util::ProcMacro>::new(input) {
33 Ok(proc) => crate::util::ProcMacro::expand(proc)
34 .unwrap_or_else(syn::Error::into_compile_error)
35 .into(),
36 Err(err) => err.into_compile_error(Some(impl_span)),
37 }
38}
39
40#[proc_macro]
41pub fn schema(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
42 let input = syn::parse_macro_input!(
43 input as <crate::proc_macros::Schema as crate::util::ProcMacro>::Input
44 );
45
46 match <crate::proc_macros::Schema as crate::util::ProcMacro>::new(input) {
47 Ok(proc) => crate::util::ProcMacro::expand(proc)
48 .unwrap_or_else(syn::Error::into_compile_error)
49 .into(),
50 Err(err) => err.into_compile_error(None),
51 }
52}