RFC for allowing macros in all ident positions #215
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Macros which resolve to idents should be usable in all positions that expect idents, including function/struct/enum names in definitions, et cetera.
Currently they can only be used as variable names.
Motivation
This will allow for creating better macros which resolve to functions. For example:
can be created to generate setters just by calling
make_setter(foo)
(which will createset_foo()
)Currently, using macros in this manner will lead to errors like
See also: rust-lang/rust#13294
Detailed design
This will probably require converting
ast::Ident
to an enum allowing for aNamedIdent
vsMacroIdent
duality.Drawbacks
None that I see
Alternatives
Suggestions welcome
Unresolved questions
I'm rather unsure about the implementation.