`cargo doc` 和 `cargo rustdoc` 的区别

Difference between `cargo doc` and `cargo rustdoc`

根据doc.rust-lang.org

build[s] a package's documentation, using specified custom flags

build[s] a package's documentation

两者有什么区别?据我了解 cargo rustdoc 就像 cargo 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

它们的关系就像 cargo buildcargo rustc 之间的关系:cargo doc 执行整个工作区的所有常规工作,包括依赖项(默认情况下)。 cargo rustdoc 允许您将标志直接传递给 rustdoc,并且仅适用于单个 crate。

Here is the execution code for cargo rustdoc. Herecargo doc 的代码。唯一的区别是 cargo rustdoc 总是指定不检查依赖关系,而 cargo doc 允许您选择(默认情况下它会,但您可以指定标志 --no-deps),并且 cargo rustc 允许您使用 --.

之后的标志将标志直接传递给 rustdoc