有没有办法隐藏文档中的宏模式?

dra*_*tis 10 macros rust rust-cargo rustdoc

从Rust 1.6.0开始,生成的文档隐藏了每个宏模式的实现:

宏实现隐藏

有没有办法隐藏Cargo生成的文档中的一些模式?

macro_rules! mc {
    // hide this entire pattern
    (@impl, $arg:expr) => { 42 + $arg };
    // but not this one
    ($arg:expr) => { mc!(@impl, $arg) };
}
Run Code Online (Sandbox Code Playgroud)

dra*_*tis 5

我想这是最佳解决方案:

/// Not meant to be called directly
#[doc(hidden)]
#[macro_export]
macro_rules! hidden {
    ( $hidden_rule1:expr ) => { ... };
    ( $hidden_rule2:expr ) => { ... };
    ...
}

#[macro_export]
macro_rules! public {
    ( $public:expr ) => ( hidden!($public) );
}
Run Code Online (Sandbox Code Playgroud)

这使用一个单独的hidden宏(可能需要公开),但不是文档的一部分.应该隐藏的所有规则都将被隐藏,并且公共的规则将在public作为文档一部分的宏中可见.

  • 请注意,如果用户显式导入宏(`#[macro_use(public)] extern crate ...`),他们将收到错误,还需要包含`hidden`:`##macro_use(public,hidden)]外箱...`. (5认同)