# Rust 复杂文件代码规范顺序(紧凑版) 1. **文件说明** - 使用 `//!` 模块文档注释,描述文件或模块作用。 - 必须位于文件最顶部。 2. **版权声明(可选)** - 如果项目需要版权信息,放在文档注释之后。 3. **外部依赖和模块引入(use)** - 所有 `use` 必须放在文件顶部,不能出现在中间或底部。 - 引入顺序:标准库 -> 当前 crate 模块 -> 父模块 -> 第三方库 - 每一类之间空 1 行,同一类内部按字母序排列 - 所有 `use` **不允许**添加注释说明分组 - 紧凑要求:单行导入尽量合并,不要强行拆成多行 4. **子模块声明(mod)** - 写在所有 `use` 之后 - `pub mod`、`mod` 都在这里集中声明 5. **常量定义(const / static)** - 必须在类型定义之前 - 命名使用 `SCREAMING_SNAKE_CASE` - 紧凑要求:值较短时保持单行,不要拆行 6. **类型别名(type)** - 放在常量之后、结构体之前 7. **结构体定义(struct)** - 放在文件的类型区域开头 - 所有 `struct` 必须集中写在这里,不允许与 `impl` 穿插 - 紧凑要求:字段数量不多时保持单行;字段多时每行一个 8. **枚举定义(enum)** - 紧随结构体之后,集中定义所有枚举类型 - 紧凑要求:简单枚举保持单行,复杂枚举多行 9. **联合体定义(union)** - 如果需要,放在枚举之后 10. **Trait 定义** - 紧跟在所有数据类型(struct/enum/union)之后 11. **实现块(impl Struct)** - 必须放在类型定义和 Trait 定义之后 - 内部方法顺序:构造函数 -> 公共方法 -> 私有方法 - 紧凑要求:函数体内调用链、元组、match 分支若能在一行内写清楚,则保持单行 12. **Trait 实现(impl Trait for Struct)** - 紧跟对应的 `impl Struct` 之后 - 不要与其他类型的实现混在一起 13. **自由函数(fn,不属于任何 impl)** - 文件中独立函数放在最后 - 按功能分组,可以用注释分隔 - 紧凑要求:参数少的函数调用保持单行 14. **测试模块(#[cfg(test)] mod tests)** - 永远放在文件最末尾 - 仅用于单元测试代码