Expand description
A bunch of methods and structures more or less related to resolving macros and
interface provided by Resolver to macro expander.
Structsยง
- Macro
Rules ๐Binding - Binding produced by a
macro_rulesitem. Not modularized, can shadow previousmacro_rulesbindings, etc.
Enumsยง
- Macro
Rules ๐Scope - The scope introduced by a
macro_rules!macro. This starts at the macroโs definition and ends at the end of the macroโs parent module (named or unnamed), or even further if it escapes with#[macro_use]. Some macro invocations need to introducemacro_rulesscopes too because they can potentially expand into macro definitions.
Functionsยง
- fast_
print_ ๐path - registered_
tools ๐ - registered_
tools_ ast - sub_
namespace_ ๐match - Macro namespace is separated into two sub-namespaces, one for bang macros and one for attribute-like macros (attributes, derives). We ignore resolutions from one sub-namespace when searching names in scope for another.
Type Aliasesยง
- Macro
Rules ๐Scope Ref macro_rules!scopes are always kept by reference and inside a cell. The reason is that we update scopes with valueMacroRulesScope::Invocation(invoc_id)in-place afterinvoc_idgets expanded. This helps to avoid uncontrollable growth ofmacro_rules!scope chains, which usually grow linearly with the number of macro invocations in a module (including derives) and hurt performance.- Res ๐