hecs_component_provider_macros/
lib.rs1use proc_macro::TokenStream;
2use syn::{parse_macro_input, DeriveInput, ItemTrait};
3
4mod component_provider;
5mod default_trait_impl;
6mod self_component_provider;
7
8#[proc_macro_derive(ComponentProvider)]
9pub fn component_provider_derive(input: TokenStream) -> TokenStream {
10 let input = parse_macro_input!(input as DeriveInput);
11
12 match component_provider::derive(input) {
13 Ok(ts) => ts,
14 Err(e) => e.to_compile_error(),
15 }
16 .into()
17}
18
19#[proc_macro_derive(SelfComponentProvider)]
20pub fn self_component_provider_derive(input: TokenStream) -> TokenStream {
21 let input = parse_macro_input!(input as DeriveInput);
22
23 match self_component_provider::derive(input) {
24 Ok(ts) => ts,
25 Err(e) => e.to_compile_error(),
26 }
27 .into()
28}
29
30#[proc_macro_attribute]
31pub fn default_trait_impl(_attr: TokenStream, input: TokenStream) -> TokenStream {
32 let input = parse_macro_input!(input as ItemTrait);
33
34 match default_trait_impl::generate(input) {
35 Ok(ts) => ts,
36 Err(e) => e.to_compile_error(),
37 }
38 .into()
39}