Rust代码文档实践Skill documenting-rust-code

这个技能是关于在Rust编程中实施高质量文档实践的指南。它涵盖了如何使用rustdoc工具编写有效的文档注释、文档函数、类型、特性和模块,包括错误文档、示例和内部文档链接。旨在提升代码的可读性、可维护性和团队协作效率。关键词:Rust文档,rustdoc,代码文档化,软件开发,文档最佳实践。

架构设计 0 次安装 0 次浏览 更新于 3/11/2026

名称: rust代码文档化 描述: HASH代码库的Rust文档实践。用于编写文档注释、文档函数/类型/特性/模块、创建错误部分、使用内部文档链接或遵循rustdoc约定。 许可证: AGPL-3.0 元数据: 触发器: 类型: 领域 强制执行: 建议 优先级: 高 关键词: - rustdoc - 文档注释 - 文档 - 内部文档链接 意图模式: - “\bdocument(ing|ation)?\b.?\b(rust|function|type|struct|enum|trait|module)\b" - "\b(write|add|create)\b.?\bdoc\scomment\b" - "\b#\s(Errors|Panics|Examples|Arguments)\b”

Rust文档实践

在HASH仓库中记录Rust代码的全面指南,遵循rustdoc约定。

核心原则

遵循高质量标准如timejiffserde:

做:

  • 每个文档注释以单行摘要开始
  • 对所有类型引用使用内部文档链接
  • # Errors文档所有错误条件
  • 为公共API包含实用示例
  • 链接标准库类型: [Vec], [HashMap], 等。
  • 对简单函数使用内联参数描述 (0-2 参数)
  • 在主文本中描述返回值,而不是单独部分

不做:

  • 文档标准特性实现 (Debug, Display, From)
  • 添加单独的# Returns部分 (改为内联)
  • 提及签名中已有的变量类型
  • 使用与代码同行的注释
  • 跳过可失败函数的错误文档

快速参考

基本文档注释

/// 通过UUID检索实体。
///
/// 从存储加载实体并验证访问权限。
/// 如果找到且可访问,返回[`Entity`]。
///
/// # 错误
///
/// - [`NotFound`] 如果实体不存在
/// - [`AuthorizationError`] 如果访问被拒绝
///
/// [`NotFound`]: EntityError::NotFound
/// [`AuthorizationError`]: EntityError::Authorization
pub fn get_entity(&self, id: EntityId) -> Result<Entity, Report<EntityError>> {

内部文档链接

/// 使用[`UserUpdateStrategy`]更新[`User`]。
///
/// 查看[`validation::user`]获取验证规则。
///
/// [`validation::user`]: crate::validation::user

文档模式

简单函数 (0-2 参数)

内联描述参数:

/// 处理`input`元素并返回过滤结果。
///
/// 获取`input`元素的集合,应用`filter_fn`,
/// 并返回只包含匹配元素的[`Vec`]。

复杂函数 (3+ 参数)

使用显式# Arguments部分:

/// 使用转换规则合并多个数据源。
///
/// # 参数
///
/// * `sources` - 要合并的数据源集合
/// * `rules` - 应用的转换规则
/// * `options` - 控制合并行为的配置
/// * `callback` - 每个合并项的可选函数

错误文档

/// # 错误
///
/// - [`WebAlreadyExists`] 如果web ID已被占用
/// - [`AuthorizationError`] 如果权限被拒绝
///
/// [`WebAlreadyExists`]: WebError::WebAlreadyExists
/// [`AuthorizationError`]: WebError::Authorization

模块文档

//! 实体管理功能。
//!
//! 主要类型:
//! - [`Entity`] - 核心实体类型
//! - [`EntityStore`] - 存储特性
//!
//! # 示例
//!
//! ```
//! use hash_graph::entity::Entity;
//! ```

带有错误处理的示例

/// # 示例
///
/// ```rust
/// let entities = get_entities_by_type(type_id)?;
/// assert_eq!(entities.len(), 2);
/// # Ok::<(), Box<dyn core::error::Error>>(())
/// ```

验证

cargo doc --no-deps --all-features

参考