Rust枚举项使用数字的规范方式:如何定义含数字的枚举成员?
Rust中数字开头枚举项的定义方式
Rust的标识符规则不允许以数字开头,枚举项名称也受此限制——哪怕用原始标识符(r#前缀)也不行,因为原始标识符要求r#后面必须跟一个合法的Rust标识符(首字符只能是字母或下划线),所以你尝试的几种写法都会报错:
r#2k:2不是合法的标识符起始字符,不符合原始标识符语法r"2k"/r#"2k"#:这是字符串字面量,不是枚举项标识符,编译器无法识别
针对数字开头的枚举场景,Rust里的惯用写法有以下几种:
1. 使用合法的驼峰/蛇形命名(推荐)
把数字转换成英文单词,遵循Rust的标识符规范,这是最符合社区习惯的写法:
enum Resolution { TwoK, FourK, }
2. 下划线前缀补全合法标识符
如果坚持保留数字形式,可以用下划线开头绕过标识符规则,虽然合法但不够优雅:
enum Resolution { _2k, _4k, }
3. 保留内部合法命名,对外映射目标名称
如果需要对外(比如序列化、API交互)暴露2k/4k这类名称,内部仍使用合法标识符,通过属性实现映射,比如用serde库:
use serde::{Serialize, Deserialize}; #[derive(Serialize, Deserialize)] enum Resolution { #[serde(rename = "2k")] TwoK, #[serde(rename = "4k")] FourK, }
内容的提问来源于stack exchange,提问作者gcb
相关产品推荐
相关产品推荐

