#proc-macro-hack #nested #expression

proc-macro-nested

Support for nested proc-macro-hack invocations

8 releases

Uses old Rust 2015

0.1.7 Jan 13, 2021
0.1.6 Jun 14, 2020
0.1.4 Mar 17, 2020
0.1.3 Mar 6, 2019
0.1.1 Nov 21, 2018

#2 in #proc-macro-hack

Download history 19995/week @ 2023-12-01 22835/week @ 2023-12-08 21762/week @ 2023-12-15 14298/week @ 2023-12-22 15795/week @ 2023-12-29 20336/week @ 2024-01-05 19742/week @ 2024-01-12 20147/week @ 2024-01-19 20938/week @ 2024-01-26 19099/week @ 2024-02-02 20487/week @ 2024-02-09 21026/week @ 2024-02-16 20751/week @ 2024-02-23 22669/week @ 2024-03-01 22551/week @ 2024-03-08 18788/week @ 2024-03-15

88,416 downloads per month
Used in fewer than 8 crates

MIT/Apache

7KB
58 lines

Support for nested invocations of proc-macro-hack expression macros.

By default, macros defined through proc-macro-hack do not support nested invocations, i.e. the code emitted by a proc-macro-hack macro invocation cannot contain recursive calls to the same proc-macro-hack macro nor calls to any other proc-macro-hack macros.

This crate provides opt-in support for such nested invocations.

To make a macro callable recursively, add a dependency on this crate from your declaration crate and update the #[proc_macro_hack] re-export as follows.

// Before
#[proc_macro_hack]
pub use demo_hack_impl::add_one;
// After
#[proc_macro_hack(support_nested)]
pub use demo_hack_impl::add_one;

No change is required within your definition crate, only to the re-export in the declaration crate.

Limitations

  • Nested invocations are preprocessed by a TT-muncher, so the caller's crate will be required to contain #![recursion_limit = "..."] if there are lengthy macro invocations.

  • Only up to 64 nested invocations are supported.

No runtime deps