You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 19:27:33