gpt4 book ai didi

macros - 如何将Rust宏变量嵌入文档中?

转载 作者:行者123 更新时间:2023-12-03 11:49:00 25 4
gpt4 key购买 nike

我想在宏生成的文档中使用宏变量:

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!");
}

呈现为:

Example from rustdoc

关于macros - 如何将Rust宏变量嵌入文档中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61390008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com