`cargo doc` 和 `cargo rustdoc` 有什么不同?

16

根据doc.rust-lang.org

使用指定的自定义标志构建软件包的文档

构建软件包的文档

这两者有什么区别?据我所知,cargo rustdoccargo doc类似,但它允许更多的lints,例如:

#![deny(rustdoc::broken_intra_doc_links)]

这正确吗?奇怪的是,在某些情况下,cargo rustdoc 也会失败,而 cargo doc 却不会。例如

some/folder on some-branch [$!] via  v1.60.0-nightly
 cargo doc
    Finished dev [unoptimized + debuginfo] target(s) in 0.53s

some/folder on some-branch [$!] via  v1.60.0-nightly
 cargo rustdoc
error: manifest path `some/folder/Cargo.toml` is a virtual manifest, but this command requires running against an actual package in this workspace

另外,cargo doc不支持添加-D选项,而cargo rustdoc则支持。

❯ cargo doc -- -D rustdoc::broken_intra_doc_links
error: Found argument '-D' which wasn't expected, or isn't valid in this context

USAGE:
    cargo doc [OPTIONS]

For more information try --help

看起来 rustdoc 用于构建单个目标的文档,而 doc 用于构建整个包的文档。不确定何时需要前者而不是后者。 - BallpointBen
1个回答

10
他们之间的关系就像 cargo buildcargo rustc 一样: cargo doc 可以为整个工作区(默认情况下)包括依赖项执行所有通常的工作。 而 cargo rustdoc 允许您直接向 rustdoc 传递标志,并且仅适用于单个 crate。 cargo rustdoc 的执行代码在这里cargo doc 的代码在这里。唯一的区别是,cargo rustdoc 总是指定不检查依赖项,而 cargo doc 允许您选择(默认情况下会检查依赖项,但您可以指定标志--no-deps),以及 cargo rustc 允许您在--后面传递标志直接给 rustdoc。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接