Skip to content

G.NAM.01 应使用统一的命名风格

【级别】 建议

【描述】

应在代码中遵循统一的 Rust 命名风格。

  • 通常在 类型、trait、枚举体 等语言项使用大驼峰( UpperCamelCase ) 命名风格,在 变量名、函 数名 等语言项使用蛇形( snake_case )命名风格。
  • 为 Cargo Feature 命名应该避免出现: no-not- 之类的否定前缀; use-with- 之类的多余前缀; -support 之类的多余后缀。

【说明】

下面是汇总信息:

Item规范
包(Crates)通常使用 snake_case
模块(Modules)snake_case
类型(Types)UpperCamelCase
TraitUpperCamelCase
枚举体UpperCamelCase
枚举体成员(Enum variants)UpperCamelCase
结构体(Structs)UpperCamelCase
结构体/联合体成员snake_case
函数(Functions)snake_case
方法(Methods)snake_case
通用构造函数(General constructors)new 或者 with_more_details
转换构造函数(Conversion constructors)from_some_other_type
宏(Macros)snake_case
本地变量(Local variables)snake_case
静态变量(Statics)SCREAMING_SNAKE_CASE
常量(Constants)SCREAMING_SNAKE_CASE
类型参数(Type parameters)简明的 UpperCamelCase ,通常使用单个大写字母: T
生存期(Lifetimes)简短的 lowercase ,通常使用单个小写字母 'a , 'de , 'src , 尽量保持语义
特性(Features)snake_case

补充解释:

  • UpperCamelCase : 每个单词的首字母都是大写的,其余部分小写,没有分隔符。由首字母缩写组 成的缩略语和复合词的缩写,算作单个词。比如,应该使用 Uuid 而非 UUID ,使用 Stdin 而不 是 StdIn

  • snake_case : 每个单词都是小写的,使用下划线作为分隔符, 如 is_xid_start

  • SCREAMING_SNAKE_CASE : 每个单词都是大写的,使用下划线作为分隔符。

  • snake_case 或者 SCREAMING_SNAKE_CASE 情况下,每个词不应该由单个字母组成——除非这 个字母是最后一个词。比如,使用 btree_map 而不使用 b_tree_map ,使用 PI_2 而不使用PI2

  • 通用构造函数的 with_more_details 形式是指推荐用户使用如: with_capacity , with_file_name 等函数名。

  • 转换构造函数的 from_some_other_type 形式是指推荐用户使用如: from_bytes , from_str , from_array 等函数名。

关于包命名:

  • 由于历史问题,包名有两种形式 snake_casekebab-case ,但实际在代码中需要引入包名的时 候, Rust 只能识别 snake_case ,也会自动将 kebab-case 识别为 kebab_case 。所以建议使用 snake_case
  • Crate 的名称通常不应该使用 -rs 或者 -rust 作为后缀或者前缀。但是有些情况下,比如是其他 语言移植的同名 Rust 实现,则可以使用 -rs 后缀来表明这是 Rust 实现的版本。