【问题标题】:How can I include private modules when generating documentation via Cargo?通过 Cargo 生成文档时如何包含私有模块?
【发布时间】:2020-02-26 20:57:05
【问题描述】:

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

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

【问题讨论】:

标签: rust rust-cargo


【解决方案1】:

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

【讨论】:

  • 如果您不想显示再出口,您也需要添加--passes strip-priv-imports
【解决方案2】:

使用货物记录私人物品:

cargo doc --document-private-items

【讨论】:

  • 如果您希望将.cargo/config 文件设为默认值,您也可以将其添加到您的项目中:[build] rustdocflags = ["--document-private-items"]
【解决方案3】:

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

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

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

【讨论】:

  • warning: the 'no-defaults' flag is considered deprecatedpasses 也一样。警告建议--document-private-items
【解决方案4】:

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

cargo rustdoc -- --document-private-items

【讨论】:

  • rustdoc 需要针对实际包运行,因此它不适用于a virtual manifest。最好使用cargo doc --document-private-items,它也适用于虚拟清单。
猜你喜欢
  • 1970-01-01
  • 2021-10-21
  • 1970-01-01
  • 1970-01-01
  • 2011-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-07
相关资源
最近更新 更多