Rust 项目文档编写:从 A 到 Z 的完整指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

引言:为什么 Rust 中的文档不是奢侈品,而是必需品

\n\n

Rust 以其内存安全、高性能和严格的类型系统而闻名。然而,即使是最优雅的代码,如果没人知道如何使用它,也是毫无价值的。高质量的文档是连接您的代码和用户(包括半年后的您自己)的桥梁。

\n\n

幸运的是,Rust 内置了强大的工具,可以直接从源代码自动生成文档。在本文中,我们将剖析整个过程:从简单的注释到创建包含示例、链接甚至数学公式的完整文档。

\n\n

1. 基础:doc 注释和 rustdoc

\n\n

Rust 中有两种类型的注释:普通注释(// 和 /* */)和文档注释(/// 和 //!)。后者由 rustdoc 工具处理,用于生成 HTML 文档。

\n\n

1.1. 外部和内部 doc 注释

\n\n
    \n
  • /// — 外部注释。写在元素(函数、结构体、trait)之前,用于描述该元素。
  • \n
  • //! — 内部注释。用于记录模块、crate 或文件本身。
  • \n
\n\n
/// 计算 n 的阶乘。\n///\n/// # 示例\n/// ```\n/// let result = factorial(5);\n/// assert_eq!(result, 120);\n/// ```\npub fn factorial(n: u32) -> u32 {\n    (1..=n).product()\n}\n\n//! # 我的超级 crate\n//!\n//! 这个 crate 提供了用于数学计算的工具。\n//! 更多详情请参见 [文档](https://example.com)。
\n\n

1.2. 运行文档生成

\n\n

要生成文档,请执行以下命令:

\n\n
cargo doc --open
\n\n

此命令将扫描您项目中的所有 doc 注释,在 target/doc/ 文件夹中创建 HTML 文件,并在浏览器中打开它们。您将看到一个包含模块、函数和结构体列表的页面——就像在 docs.rs 上一样。

\n\n

2. 文档章节:如何使其易于阅读

\n\n

仅仅编写注释是不够的。要使文档有用,需要对其进行结构化。rustdoc 支持 Markdown,因此您可以使用标题、列表、链接甚至代码块。

\n\n

2.1. 标准章节

\n\n

通常使用以下章节(以 # 开头):

\n\n
    \n
  • # Examples — 一个或多个使用示例。
  • \n
  • # Panics — 函数在哪些情况下会引发 panic。
  • \n
  • # Errors — 如果函数返回 Result,请描述可能的错误。
  • \n
  • # Safety — 对于 unsafe 函数是必需的。
  • \n
  • # Arguments — 参数说明(尽管通常直接在文本中描述)。
  • \n
\n\n
/// 读取文件内容并将其作为字符串返回。\n///\n/// # Arguments\n/// * `path` — 文件路径。\n///\n/// # Errors\n/// 如果文件不存在或无法读取,则返回 `io::Error`。\n///\n/// # Panics\n/// 如果路径包含空字节,则引发 panic。\n///\n/// # Examples\n/// ```\n/// let content = read_file("hello.txt").unwrap();\n/// println!("{}", content);\n/// ```\npub fn read_file(path: &str) -> Result<String, std::io::Error> {\n    std::fs::read_to_string(path)\n}
\n\n

2.2. 链接和交叉引用

\n\n

您可以引用代码中的其他元素。rustdoc 会自动将它们转换为超链接:

\n\n
/// 使用 [`factorial`] 函数计算组合数。\n/// 另请参见模块 [`math::combinatorics`]。\npub fn combinations(n: u32, k: u32) -> u32 {\n    factorial(n) / (factorial(k) * factorial(n - k))\n}
\n\n

如果需要引用

博客

书籍推荐