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

lth*_*hms 12 rust rust-cargo

我目前正在与Rust和Cargo合作开展一个项目.它运行良好,但我遇到一个小问题:对于代码重用,我的大多数项目都在lib crate中.在这个箱子里,很多东西都是私人的.所以当我这样做的时候cargo doc,我只有公共的,出口的东西的文件......这实际上很棒,因为很容易看出什么是出口的,什么不是.

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

She*_*ter 10

今天您可能无法使用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`
Run Code Online (Sandbox Code Playgroud)

然后,添加--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
Run Code Online (Sandbox Code Playgroud)


Zit*_*rax 8

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

cargo rustdoc -- --document-private-items
Run Code Online (Sandbox Code Playgroud)

  • rustdoc需要针对实际的软件包运行,因此它不适用于[虚拟清单](https://doc.rust-lang.org/cargo/reference/manifest.html#the-workspace-section)。最好使用`cargo doc --document-private-items`,它也适用于虚拟清单。 (4认同)

joe*_*son 8

使用货物记录私人物品:

cargo doc --document-private-items
Run Code Online (Sandbox Code Playgroud)

  • 如果您希望将其设为默认值,您还可以将 `.cargo/config` 文件添加到您的项目中:`[build] rustdocflags = ["--document-private-items"]` (4认同)

ide*_*n42 5

这可以通过将参数传递给rustdoc来实现--,例如。

cargo rustdoc -- \
    --no-defaults \
    --passes strip-hidden \
    --passes collapse-docs \
    --passes unindent-comments \
    --passes strip-priv-imports
Run Code Online (Sandbox Code Playgroud)

基于@Shepmaster的答案,无需手动复制粘贴。