通过 Cargo 生成文档时如何包含私有模块?

How can I include private modules when generating documentation via Cargo?

我目前正在使用 Rust 和 Cargo 进行一个项目。它运行良好,但我遇到了一个小问题:为了代码重用,我的大部分项目都在一个 lib crate 中。在这个箱子里,很多东西都是私人的。所以当我做 cargo doc 时,我只有 public 的文档,导出的东西......这实际上很棒,因为很容易看出什么是导出的,什么不是。

但我不得不承认:我错过了整个项目的完整文档,用于开发目的...

Rust 1.41

二进制文件的文档默认包含二进制包中的私有项目。

Rust 1.29

您现在可以使用 cargo doc --document-private-items

以前的版本

今天用 Cargo 可能做不出来,直接用 rustdoc 有办法。

运行 cargo doc -v 并记下它运行的 rustdoc 命令:

$ cargo doc -v
   Compiling docz v0.0.1 (file:///private/tmp/docz)
     Running `rustdoc src/lib.rs -o /private/tmp/docz/target/doc --crate-name docz -L dependency=/private/tmp/docz/target/debug -L dependency=/private/tmp/docz/target/debug/deps`

然后,在命令中添加--no-defaults --passes strip-hidden --passes collapse-docs --passes unindent-comments

rustdoc src/lib.rs -o /private/tmp/docz/target/doc --crate-name docz \
    -L dependency=/private/tmp/docz/target/debug \
    -L dependency=/private/tmp/docz/target/debug/deps \
    --no-defaults \
    --passes strip-hidden --passes collapse-docs --passes unindent-comments

这可以通过在 -- 之后将参数传递给 rustdoc 来完成,例如

cargo rustdoc -- \
    --no-defaults \
    --passes strip-hidden \
    --passes collapse-docs \
    --passes unindent-comments \
    --passes strip-priv-imports

根据@Shepmaster 的回答,无需手动复制粘贴。

现在更简单了,只需使用:

cargo rustdoc -- --document-private-items

使用 cargo 来记录私人物品:

cargo doc --document-private-items