我想在宏生成的文档中使用宏变量:
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'
最佳答案
这可以使用递归宏来完成:
macro_rules! impl_foo {
($name:ident, $sname:expr) => {
#[doc = "Returns a new `"]
#[doc = $sname]
#[doc = "`."]
pub fn myfoo() -> $name {
42
}
};
($name:tt) => {
impl_foo!($name, stringify!($name));
};
}
impl_foo!(u32);
fn main() {
println!("Hello, world!");
}
呈现为:
关于macros - 如何将 Rust 宏变量嵌入到文档中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53578378/