Skip to content

Helper attributes in attribute macros #716

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 1 commit into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions src/procedural-macros.md
Original file line number Diff line number Diff line change
Expand Up @@ -273,6 +273,11 @@ fn invoke4() {}
// out: item: "fn invoke4() {}"
```

#### Attribute macro helper attributes
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I do not understand this addition; until we have something like rust-lang/rust#65823 there is no such thing in the language definition as "attribute macro helper attributes". (N.B. the reference is not a user guide -- it is an incomplete definition of the language).

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for pointing me to that issue, its basically the same reason for my edit: new comers might be confused how to get the same behaviour like the helper attributes in a full fledged proc macro attribute, not realising that it is the macro's job to actually strip those out (or what ever else for that matter) - I get that it is weird to put something in the docs that looks like a user-guide thing but clearly I am not the only person stumbling over this...

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@extrawurst I think adding this sort of documentation would be appropriate for e.g. a book on procedural macros or some other sort of tutorial (cc @dtolnay for possible locations). But people stumbling over things is not a good reason to add help notes to the reference, which is not teaching material.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fair enough


Unlike for [Derive macros] helper attributes do not have to be marked explicitly.
Since attribute macros can completely discard the input token stream filtering out custom `helper` attributes is entirely the job of the attribute macro.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Since attribute macros can completely discard the input token stream filtering out custom `helper` attributes is entirely the job of the attribute macro.
Since attribute macros can completely discard the input token stream filtering
out custom `helper` attributes is entirely the job of the attribute macro.


[Attribute macros]: #attribute-macros
[Cargo's build scripts]: ../cargo/reference/build-scripts.html
[Derive macros]: #derive-macros
Expand Down