macro_rules! foo_macro {
($name:ident) => {
pub struct $name;
}
}
/// Doc comment for Foo struct.
foo_macro!(Foo);
/// Doc comment for Bar struct.
foo_macro!(Bar);
рдЗрд╕ рдорд╛рдореВрд▓реА рдХреЛрдб рдирдореВрдиреЗ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореИрдХреНрд░реЛ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЕрд▓рдЧ рдореИрдХреНрд░реЛ рдЖрдордВрддреНрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреВрдареА рдЯрд┐рдкреНрдкрдгреА рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред
рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдлреВ рдФрд░ рдмрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреВрдареА рдЯрд┐рдкреНрдкрдгреА рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЬрдВрдЧ рд╕рдВрдХрд▓рдХ рдореЗрдВ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ рдЬрдм рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
#![warn(missing_docs)]
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде:
warning: missing documentation for a struct
--> src/activation_fn.rs:9:3
|
9 | pub struct $name;
| ^^^^^^^^^^^^^^^^^
...
14 | foo_macro!(Foo);
| ---------------- in this macro invocation
|
note: lint level defined here
--> src/lib.rs:1:9
|
1 | #![warn(missing_docs)]
| ^^^^^^^^^^^^
warning: missing documentation for a struct
--> src/activation_fn.rs:9:3
|
9 | pub struct $name;
| ^^^^^^^^^^^^^^^^^
...
17 | foo_macro!(Bar);
| ---------------- in this macro invocation
|
note: lint level defined here
--> src/lib.rs:1:9
|
1 | #![warn(missing_docs)]
| ^^^^^^^^^^^^
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
macro_rules! foo_macro {
/// Unified comment for any macro expansion which is bad!
($name:ident) => {
pub struct $name;
}
}
foo_macro!(Foo);
foo_macro!(Bar);
рдЖрдк рдХреЗрд╡рд▓ рд╕рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдбреЙрдХреНрдЯрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ #[doc]
рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рд╣реИрдВ), рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд╛ рд╕реАрдзреЗ рдПрдХ рдкрд╣рдЪрд╛рди рджреНрд╡рд╛рд░рд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдЙрджрд╛рд╣рд░рдг (рдЦреЗрд▓ рдХрд╛ рдореИрджрд╛рди)
macro_rules! foo_macro {
($(#[$attr:meta])* struct $name:ident) => {
$(#[$attr])*
pub struct $name;
}
}
foo_macro!(
/// Doc comment for Foo struct.
struct Foo
);
foo_macro!(
/// Doc comment for Bar struct.
struct Bar
);
fn main() {
}
рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреНрд░рд╢реНрдиреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдлрд╝реЛрд░рдо рдПрдХ рдЕрдЪреНрдЫреА рдЬрдЧрд╣ рд╣реИред https://users.rust-lang.org/
рдХрдВрдХреНрд░реАрдЯ рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рдХрд╛ рдпрд╣рд╛рдВ рдмрд╣реБрдд рд╕реНрд╡рд╛рдЧрдд рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рдмрдВрдж рдХрд░ рджреВрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рдЙрддреНрддрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдордВрдЪ рдкрд░ рдЖрдЧреЗ рдХреА рдЪрд░реНрдЪрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рд╣реИред
рдпрд╣рд╛рдВ рдорд╛рдорд▓рд╛ рд╕реБрд▓рдЭрддрд╛ рдирдЬрд░ рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реИред ident
рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдореИрдХреНрд░реЛрдЬрд╝ рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рдХреИрд╕реЗ рд▓рд┐рдЦреЗрдВ?
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдпрд╣рд╛рдВ рдорд╛рдорд▓рд╛ рд╕реБрд▓рдЭрддрд╛ рдирдЬрд░ рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реИред
ident
рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдореИрдХреНрд░реЛрдЬрд╝ рдХреЗ рд▓рд┐рдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рдХреИрд╕реЗ рд▓рд┐рдЦреЗрдВ?