从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) };
}
答案 0 :(得分: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) );
}
这使用单独的hidden
宏(可能需要公开),但不是文档的一部分。应隐藏的所有规则都将被隐藏,并且公共的规则将在public
宏中显示,该宏是文档的一部分。
答案 1 :(得分:1)
一种选择是拥有一个仅包含公共臂的虚拟宏,并使用属性来选择 rustdoc 看到的:
/// Do a thing
///
/// ```
/// # extern crate my_crate;
/// # use my_crate::mc;
/// assert_eq!(mc!(58), 100);
/// ```
#[cfg(doc)]
#[macro_export]
macro_rules! mc {
($arg:expr) => { ... };
}
#[cfg(not(doc))]
#[macro_export]
macro_rules! mc {
(@impl, $arg:expr) => { 42 + $arg };
($arg:expr) => { mc!(@impl, $arg) };
}
注意:这仅在您不在内部使用宏时才有效。