第9章 文档
3 分钟阅读
译文 · 基于 Pragmatic Rust Guidelines
原文链接: https://microsoft.github.io/rust-guidelines/guidelines/docs/index.html
文档
首句一行,约 15 个英文词 (M-FIRST-DOC-SENTENCE)
本条守护:易于扫读的 API 文档。
为条目编写文档时,第一句会成为「摘要句」,被提取并显示在模块摘要中:
| |
由于 Rust API 文档以固定最大宽度渲染,存在一个自然的首选句长;为在大多数屏幕上保持整洁,你不应超出该长度。
若把内容保持在一行内,文档就会易于扫读。例如,对比标准库:

否则,可能出现「孤行」(widows),阅读体验整体不佳:

经验法则是:首句不应超过 15 个英文词。
具备完备的模块文档 (M-MODULE-DOCS)
本条守护:便捷的 API 文档导航。
任何公开的库模块都必须有 //! 模块文档,且首句必须遵循 M-DOC-FIRST-SENTENCE。
| |
模块文档的其余部分应当完备,即覆盖所含条目最相关的技术方面,包括
- 模块包含什么
- 何时应当使用,以及可能何时不该使用
- 示例
- 子系统规格(例如,
std::fmt也描述了其格式化语言) - 可观察的副作用,以及关于这些副作用有哪些保证(如有)
- 相关实现细节,例如所用的系统 API
优秀示例包括:
这并不意味着每个模块都应包含上述全部内容。但如果需要说明所含类型之间的交互, 模块文档就是合适的位置。
文档包含规范章节 (M-CANONICAL-DOCS)
本条守护:既定的 Rust 文档惯例。
公开的库条目必须包含规范文档章节。摘要句必须始终存在。强烈鼓励提供扩展文档与示例。
其余章节(# Examples、# Errors、# Panics、# Safety、# Abort)在适用时必须存在。这些英文小节名是编译器能识别的规范 rustdoc 标题,应保持英文。
| |
与其他语言不同,你不应创建参数表。参数的用法应在正文中说明。换言之,不要写成
| |
而应写成:
| |
相关阅读
- 函数文档应包含错误、panic 与安全性考量(C-FAILURE)
为 pub use 项标记 #[doc(inline)] (M-DOC-INLINE)
本条守护:与同级项融为一体的再导出项。
通过 pub use foo::Foo 或 pub use foo::* 公开再导出 crate 条目时,它们会显示在不透明的再导出块中。多数情况下,这对读者并无帮助:

相反,你应在 use 处用 #[doc(inline)] 标注它们,使其自然内联:
| |

这不适用于 std 或第三方类型;这些类型应始终不内联地再导出,以明确它们是外部的。
⚠️ 仍然避免 glob 导出
上述
#[doc(inline)]技巧并不改变 M-NO-GLOB-REEXPORTS;通常仍不应通过通配符再导出条目。