generating_proc_macro_crate/
lib.rs

1use proc_macro::TokenStream;
2use quote::{ quote, __private::TokenStream as QuoteTokenStream };
3
4#[proc_macro]
5pub fn example_proc_macro(_: TokenStream) -> TokenStream {
6    let token_stream: QuoteTokenStream = std::iter::once(quote!{
7        #[macro_export]
8        macro_rules! macros_by_example_generated_by_proc_macro {
9            () => {
10                proc_macro_generator_wrapper::__module::some_lower_level_macro!()
11            };
12        }
13        pub use macros_by_example_generated_by_proc_macro as generated_macros_example;
14    }).collect();
15
16    quote!{
17        #[doc(hidden)]
18        mod __internal_macros {
19            #token_stream
20        }
21
22        pub use __internal_macros::generated_macros_example;
23    }.into()
24}