warning: non-local `macro_rules!` definition, `#[macro_export]` macro should be written at top level module --> $DIR/auxiliary/nested-macro-rules.rs:7:9 | LL | macro_rules! outer_macro { | ------------------------ in this expansion of `nested_macro_rules::outer_macro!` ... LL | / macro_rules! inner_macro { LL | | ($bang_macro:ident, $attr_macro:ident) => { LL | | $bang_macro!($name); LL | | #[$attr_macro] struct $attr_struct_name {} LL | | } LL | | } | |_________^ | ::: $DIR/nested-macro-rules.rs:23:5 | LL | nested_macro_rules::outer_macro!(SecondStruct, SecondAttrStruct); | ---------------------------------------------------------------- in this macro invocation | = help: remove the `#[macro_export]` or move this `macro_rules!` outside the of the current function `main` = note: a `macro_rules!` definition is non-local if it is nested inside an item and has a `#[macro_export]` attribute = note: this lint may become deny-by-default in the edition 2024 and higher, see the tracking issue note: the lint level is defined here --> $DIR/nested-macro-rules.rs:8:9 | LL | #![warn(non_local_definitions)] | ^^^^^^^^^^^^^^^^^^^^^ warning: 1 warning emitted