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

如何正确处理Rust实体中的驼峰命名问题 消除snake case编译警告

解决方案

方案1(推荐):遵循Rust命名规范+serde别名配置

你当前使用了serde的序列化/反序列化能力,可以直接将字段改为Rust规范要求的蛇形命名mv_id,再通过#[serde(rename)]属性指定对外映射的字段名为mvId,既符合Rust社区命名惯例,也能完美适配第三方系统的字段要求,不会触发编译警告。
示例代码如下:

#[derive(Debug, PartialEq, Eq, Deserialize,Serialize)]
pub struct PlayRecordRequest {
    pub id: i64,
    pub title: String,
    pub url: String,
    #[serde(rename = "mvId")]
    pub mv_id: i64,
    pub album: Album,
    pub artist: Vec<Artist>
}

该方案不会关闭编译器的命名规范校验,其他不符合规范的字段依然会正常触发提示,是这类场景的标准实现方式。

方案2:直接关闭命名规范警告

如果确实需要保留字段名为mvId,可以通过#[allow(non_snake_case)]注解关闭对应范围的蛇形命名校验:

仅关闭单个字段的校验

#[derive(Debug, PartialEq, Eq, Deserialize,Serialize)]
pub struct PlayRecordRequest {
    pub id: i64,
    pub title: String,
    pub url: String,
    #[allow(non_snake_case)]
    pub mvId: i64,
    pub album: Album,
    pub artist: Vec<Artist>
}

关闭整个结构体所有字段的校验

#[allow(non_snake_case)]
#[derive(Debug, PartialEq, Eq, Deserialize,Serialize)]
pub struct PlayRecordRequest {
    pub id: i64,
    pub title: String,
    pub url: String,
    pub mvId: i64,
    pub album: Album,
    pub artist: Vec<Artist>
}

内容的提问来源于stack exchange,提问作者Dolphin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 04:21:01