Rust项目文档编写:创建高质量文档

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

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

开始课程

为 Rust 项目编写文档:从基础到高级技巧



代码文档是 Rust 专业开发中不可或缺的一部分。得益于内置工具 rustdoc,创建高质量的文档变得简单而高效。在本文中,我们将探讨如何利用生态系统的所有功能,为 Rust 项目正确编写文档。



Rust 文档编写基础



Rust 使用基于 Markdown 的特殊语法来编写文档。文档通过 doc 注释编写,以 ///(用于外部文档)或 //!(用于模块的内部文档)开头。



让我们看一个基本示例:



/// 计算一个数的阶乘。////// 此函数接受一个非负整数 `n`/// 并返回其阶乘。如果 `n` 等于 0,则返回 1。////// # Examples////// ```/// let result = factorial(5);/// assert_eq!(result, 120);/// ```pub fn factorial(n: u64) -> u64 {    (1..=n).product()}

//! # 数学函数模块//!//! 此模块包含基本的数学运算,//! 包括阶乘和二项式系数的计算。pub mod math;


使用 rustdoc 生成文档



rustdoc 工具是 Rust 标准工具集的一部分,它会自动从 doc 注释生成 HTML 文档。要运行它,只需执行以下命令:



cargo doc --open


此命令将为您的项目及其所有依赖项生成文档,然后在浏览器中打开它。您还可以指定其他标志:



  • --no-deps — 不包含依赖项的文档
  • --document-private-items — 记录私有项
  • --target-dir — 指定输出文件的目录


生成的文档会自动包含导航、搜索、指向类型和函数的链接,以及来自代码示例的测试。



Doc 注释的结构和特殊部分



Rust 中的高质量文档遵循特定的结构。建议使用以下部分:



  • 简短描述 — 注释的第一行,显示在列表和搜索中
  • 详细描述 — 解释函数的工作原理、其特性和限制
  • # Examples — 一个或多个使用示例
  • # Panics — 函数可能导致 panic 的情况
  • # Errors — 可能的错误及其处理
  • # Safety — 对于 unsafe 函数:解释安全前提条件


完整函数文档的示例:



/// 根据指定的分隔符将字符串分割成部分。////// 返回一个字符串向量,这些字符串是通过/// 在每次出现 `delimiter` 时分割原始字符串 `text` 得到的。/// 结果中不包含空字符串。////// # Examples////// ```/// let result = split_string("a,b,c", ',');/// assert_eq!(result, vec!["a", "b", "c"]);/// ```////// # Panics////// 如果 `delimiter` 是空字符串,函数会 panic。////// # Errors////// 此函数不返回错误,但可能会 panic。pub fn split_string(text: &str, delimiter: char) -> Vec<String> {    assert!(delimiter != '\\0', "分隔符不能是空字符");    text.split(delimiter)        .filter(|s| !s.is_empty())        .map(|s| s.to_string())        .collect()}


测试文档



Rust 的一大优势是能够直接在文档中测试代码示例。命令 cargo test 会自动运行 doc 注释中的所有示例。

博客

书籍推荐