如何防止 `rust doc` 将依赖项添加到文档中?
How do I prevent `rust doc` from adding dependencies to documentation?
我刚开始玩 Rust 并试图为我编写的代码生成文档。当我发出cargo doc
时,我看到了一些奇怪的东西。
21:53 $ cargo doc
Compiling regex-syntax v0.2.2
Compiling libc v0.2.2
Compiling memchr v0.1.7
Compiling aho-corasick v0.3.4
Compiling regex v0.1.41
Compiling my_project v0.0.1 (path/to/my_project)
当我打开 my_project/target/doc/my_project/index.html
时,我注意到所有依赖项都包含在我的文档中:
我希望对用户隐藏这些依赖项的文档,因此我的文档仅显示如何使用 my 代码。
我该怎么做?
Cargo.lock
[root]
name = "my_project"
version = "0.0.1"
dependencies = [
"regex 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "aho-corasick"
version = "0.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"memchr 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "libc"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "memchr"
version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"libc 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "regex"
version = "0.1.41"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"aho-corasick 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
"memchr 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
"regex-syntax 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "regex-syntax"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
我找到了答案:cargo doc --no-deps
。
默认情况下,cargo doc
为本地包和所有依赖项构建文档。输出以 rustdoc 的常用格式放置在 target/doc 中。
为避免构建依赖项的文档,请传递 --no-deps
。
通常,我也倾向于通过 --open
。这将在构建它们后在浏览器中打开文档。
cargo doc --no-deps --open
Here 可以找到有关如何构建软件包文档的更多详细信息。
简单的例子。考虑以下 lib.rs
文件
//! This is my module documentation. My library is so nice!
/// four() is a function that returns `4`
///
/// ````
/// use mylib::four;
/// let x = four();
/// assert_eq!(four(), 4);
/// ````
pub fn four() -> i32 { 4 }
#[cfg(test)]
mod tests {
use super::four;
#[test]
fn it_works() {
assert_eq!(four(), 4);
}
}
跑的时候
cargo doc --no-deps --open
浏览器打开如下:
我刚开始玩 Rust 并试图为我编写的代码生成文档。当我发出cargo doc
时,我看到了一些奇怪的东西。
21:53 $ cargo doc
Compiling regex-syntax v0.2.2
Compiling libc v0.2.2
Compiling memchr v0.1.7
Compiling aho-corasick v0.3.4
Compiling regex v0.1.41
Compiling my_project v0.0.1 (path/to/my_project)
当我打开 my_project/target/doc/my_project/index.html
时,我注意到所有依赖项都包含在我的文档中:
我希望对用户隐藏这些依赖项的文档,因此我的文档仅显示如何使用 my 代码。
我该怎么做?
Cargo.lock
[root]
name = "my_project"
version = "0.0.1"
dependencies = [
"regex 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "aho-corasick"
version = "0.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"memchr 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "libc"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "memchr"
version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"libc 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "regex"
version = "0.1.41"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"aho-corasick 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
"memchr 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
"regex-syntax 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "regex-syntax"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
我找到了答案:cargo doc --no-deps
。
默认情况下,cargo doc
为本地包和所有依赖项构建文档。输出以 rustdoc 的常用格式放置在 target/doc 中。
为避免构建依赖项的文档,请传递 --no-deps
。
通常,我也倾向于通过 --open
。这将在构建它们后在浏览器中打开文档。
cargo doc --no-deps --open
Here 可以找到有关如何构建软件包文档的更多详细信息。
简单的例子。考虑以下 lib.rs
文件
//! This is my module documentation. My library is so nice!
/// four() is a function that returns `4`
///
/// ````
/// use mylib::four;
/// let x = four();
/// assert_eq!(four(), 4);
/// ````
pub fn four() -> i32 { 4 }
#[cfg(test)]
mod tests {
use super::four;
#[test]
fn it_works() {
assert_eq!(four(), 4);
}
}
跑的时候
cargo doc --no-deps --open
浏览器打开如下: