调整引擎的最大操作数限制从100,000到10,000,000以支持更复杂的表达式计算 优化变量解析逻辑,仅在明确以ctx[或ctx.开头时才进行表达式求值,其他情况保留原字符串 简化项目代码规范文档结构,保留核心规则并移除冗余内容
60 lines
2.3 KiB
Markdown
60 lines
2.3 KiB
Markdown
# 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)**
|
||
- 永远放在文件最末尾
|
||
- 仅用于单元测试代码 |