[rust-dev] Exporting macros: #[macro_escape] usage
chris.morganiser at gmail.com
Fri Jan 10 15:39:24 PST 2014
The macro is being defined after the module is defined. You need to move
the macro definition before the "pub mod submod;" line. Also due to the
scoping rules of macros, you don't need #[macro_escape] there---it's a
child, so it gets the macro. Only siblings, parents, uncles, aunts,
cousins, &c. would need it.
On Jan 11, 2014 9:46 AM, "Vladimir Matveev" <dpx.infinity at gmail.com> wrote:
> As far as I understand, the current way to export macros is to
> annotate the module with macro_rules definition with #[macro_escape]
> annotation. But I just can't get it right, and my macro is not visible
> in other module :(
> Here is what I have:
> ----- START -----
> pub mod m1;
> pub mod submod;
> macro_rules! example_rule(
> () => (mod test;)
> use m1;
> ----- END -----
> I have assumed that putting #[macro_escape] annotation to a module
> makes all macros from that module available in all modules which
> import this module, but apparently I'm wrong because the code above
> does not work with 'macro undefined' error.
> Could please someone explain how #[macro_escape] works in detail? I
> couldn't find any documentation on it, and looking through standard
> libs was not helpful.
> Rust-dev mailing list
> Rust-dev at mozilla.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Rust-dev