关于 rust-idioms
面向 Rust 开发者的惯用写法与重构指南,按影响优先级组织类型安全、所有权、错误处理和 API 设计等规则。适用于编写新代码、重构和设计公共接口。
主要功能
- 01涵盖 8 类 Rust 实践
- 02强调类型安全与 Newtype
- 03指导所有权和借用
- 04整理错误处理模式
- 05提供 API 与模块设计建议
适用场景
- 01编写具备强类型保证的 Rust 代码
- 02重构所有权与借用模式
- 03设计错误处理策略
- 04整理模块并控制可见性
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill rust-idioms安装后在 Claude Code 中输入/rust-idioms确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
AGENTS.mdREADME.mdmetadata.jsonassets/templates/_template.mdreferences/_sections.mdapi-builder-pattern.mdapi-derive-common-traits.mdapi-extension-traits.mdapi-generic-bounds.mdapi-impl-standard-traits.mdapi-sealed-traits.mdconv-asref-for-flexibility.mdconv-impl-deref-for-newtypes.mdconv-impl-from-not-into.mdconv-inner-function-pattern.mdconv-tryfrom-for-fallible.mderr-anyhow-for-applications.mderr-option-for-absence.mderr-question-mark-propagation.mderr-thiserror-for-libraries.mderr-use-result-not-panic.mdidiom-constructor-naming.mdidiom-default-trait.mdidiom-destructuring-assignment.mdidiom-let-else.mdidiom-match-guards.mdidiom-struct-update-syntax.mditer-avoid-collect-then-iterate.mditer-enumerate-for-indices.mditer-filter-map-combined.md详细介绍
Rust 社区 Rust 重构最佳实践
面向 Rust 应用的全面重构与惯用模式指南,由 Rust 社区维护。包含 8 个类别的 44 条规则,并按影响程度排序,用于指导自动化重构与代码生成。
适用场景
在以下情况下参考这些指南:
- 编写具有强类型保证的新 Rust 代码
- 重构所有权与借用模式
- 设计错误处理策略
- 使用 trait 和泛型创建公共 API
- 组织模块并控制可见性
按优先级划分的规则类别
| 优先级 | 类别 | 影响 | 前缀 |
|---|---|---|---|
| 1 | 类型安全与 Newtype 模式 | 严重 | type- |
| 2 | 所有权与借用 | 严重 | own- |
| 3 | 错误处理模式 | 高 | err- |
| 4 | API 设计与 Trait | 高 | api- |
| 5 | 模块与可见性 | 中高 | mod- |
| 6 | 转换 Trait | 中 | conv- |
| 7 | 惯用模式 | 中 | idiom- |
| 8 | 迭代器与集合 | 中低 | iter- |
快速参考
1. 类型安全与 Newtype 模式(严重)
type-newtype-units- 使用 Newtype 模式确保单位安全type-newtype-invariants- 在 Newtype 构造器中编码不变量type-non-exhaustive-enums- 使用非穷尽枚举以支持扩展type-phantom-data- 使用 PhantomData 表示类型级状态type-strong-typing-strings- 用强类型替代字符串类型 APItype-builder-required-fields- 对必填字段使用类型状态构建器
2. 所有权与借用(严重)
own-prefer-borrowing- 参数优先使用借用而非所有权own-cow-conditional-clone- 使用 Cow 实现条件所有权own-accept-borrowed-types- 优先接受借用类型,而非拥有所有权的引用own-return-owned-for-flexibility- 返回拥有所有权的类型,为调用方提供灵活性own-avoid-unnecessary-clone- 避免不必要的 clone 调用own-lifetime-elision- 利用生命周期省略规则
3. 错误处理模式(高)
err-use-result-not-panic- 对可恢复错误使用 Result,而非 panic!err-thiserror-for-libraries- 库的错误类型使用 thiserrorerr-anyhow-for-applications- 应用程序错误处理使用 anyhowerr-question-mark-propagation- 使用问号运算符传播错误err-option-for-absence- 对缺失情况使用 Option,而非哨兵值
4. API 设计与 Trait(高)
api-derive-common-traits- 为公共类型派生常见 Traitapi-impl-standard-traits- 实现标准 Trait,打造易用的 APIapi-generic-bounds- 使用 Trait 约束提升泛型灵活性api-sealed-traits- 使用密封 Trait,防止外部实现api-builder-pattern- 复杂构造使用构建器模式api-extension-traits- 使用扩展 Trait 为外部类型添加方法
5. 模块与可见性(中高)
mod-minimize-pub-api- 尽量缩小公共 API 的范围mod-pub-use-reexports- 使用 pub use 实现简洁的模块重新导出mod-split-large-modules- 将大型模块拆分为子模块mod-crate-prefix-imports- 内部导入使用 crate:: 前缀mod-tests-submodule- 使用 tests 子模块编写单元测试
6. 转换 Trait(中)
conv-impl-from-not-into- 实现 From,而不是 Intoconv-asref-for-flexibility- 接受 AsRef,以灵活处理字符串参数conv-impl-deref-for-newtypes- 实现 Deref,以透明访问新类型conv-tryfrom-for-fallible- 对可能失败的转换使用 TryFromconv-inner-function-pattern- 使用内部函数模式减少单态化
7. 惯用模式(中)
idiom-default-trait- 无参时实现 Default,而不是 new()idiom-constructor-naming- 遵循构造函数命名约定idiom-let-else- 模式匹配失败时使用 let-else 提前返回idiom-struct-update-syntax- 使用结构体更新语法进行部分覆盖idiom-destructuring-assignment- 使用解构处理多个返回值和字段访问idiom-match-guards- 使用 match 守卫处理复杂条件
8. 迭代器与集合(低中)
iter-prefer-iterators-over-loops- 优先使用迭代器方法,而非手动循环iter-use-collect-turbofish- 使用 turbofish 显式指定 collect 类型iter-filter-map-combined- 使用 filter_map 合并过滤和转换iter-avoid-collect-then-iterate- 避免先收集再迭代iter-enumerate-for-indices- 使用 enumerate,而非手动跟踪索引
如何使用
阅读各个参考文件,了解详细说明和代码示例:
完整编译文档
如需查看单文件的完整指南,请参阅 AGENTS.md。
评论
支持 Markdown