有没有一种方法可以在宏的doc属性内使用字符串格式?

时间:2020-11-02 17:20:52

标签: rust macros documentation

我正在使用宏来生成一系列枚举变量。我想为每个文档添加一些文档,可以使用#[doc = "..."]属性来完成。如果有字符串文字,这可以很好地工作,但是每个宏变体都有一些我想放入文档字符串中的其他数据。

在普通代码中,我将使用format!来生成格式化的字符串。有什么办法可以在宏中执行此操作吗?

这是一个最小的例子。它尝试生成每个变量具有doc属性的三变量枚举。如果将format!宏替换为字符串文字,则可以正常工作。

macro_rules! fancy_enum {
    ($($name:ident => ($str:expr, $int:expr)),+) => {
        pub enum Fancy {
            $(
            #[doc = format!("Variant with string {} and value {}", $str, $int)]
            $name
            ),+
        }
    }
}

fancy_enum!(
    A => ("alpha", 1),
    B => ("bravo", 2),
    C => ("charlie", 3)
);

0 个答案:

没有答案