【发布时间】:2017-04-11 17:56:55
【问题描述】:
我想在宏生成的文档中使用一个宏变量:
macro_rules! impl_foo {
($name:ident) => {
/// Returns a new `$name`.
fn myfoo() -> $name {
}
};
}
但是,变量不会被替换。我也尝试使用#[doc] 属性:
macro_rules! impl_foo {
($name:ident) => {
#[doc = concat!("Returns a new `", $name, "`.")]
fn myfoo() -> $name {
}
};
}
这个竟然解析失败:unexpected token: 'concat'
【问题讨论】:
-
@Shepmaster 我找不到,但我想知道为什么第二个无法解析。
-
属性内允许的标记集可能非常有限。
-
@torkleyy 宏在解析时没有展开(这就是为什么会有RFC 1628 "Eager expansion of macros")
-
@Shepmaster 我虽然现在程序宏允许属性中的任何标记(但
#[doc]属性本身不知道如何处理这些)。
标签: macros documentation rust