rust 驼峰命名法 snake_case
2025-05-03
Rust 中 #[serde(rename_all = "camelCase")] 的作用解释
本文件解释为何使用 #[serde(rename_all = "camelCase")],而不是直接将结构体字段命名为驼峰形式。
✅ 背景:Rust 与 API 命名风格不同
- Rust 的命名风格:
snake_case(下划线小写) - 常见 Web API(如 Binance):
camelCase(驼峰命名)
例如,API 返回:
{
"entryPrice": "30500.23",
"markPrice": "30450.55"
}
Rust 中我们更习惯写成:
pub struct PositionRisk {
pub entry_price: String,
pub mark_price: String,
}
❓ 为什么不直接在 Rust 中用 camelCase
🔸 原因一:不符合 Rust 风格指南
Rust 官方建议结构体字段使用 snake_case 命名方式。违背此规范会让代码看起来“不地道”,不统一。
🔸 原因二:工具和生态不友好
使用 camelCase 会被 lint 工具(如 Clippy)警告,IDE 补全也不标准,维护成本更高。
🔸 原因三:跨团队协作困难
Rust 开发者普遍期望看到 snake_case,使用 camelCase 容易让他人困惑。
✅ #[serde(rename_all = "camelCase")] 的作用
该属性作用于整个结构体,在序列化/反序列化时:
- 自动将 Rust 的
snake_case字段映射为 JSON 的camelCase字段名 - 不影响结构体内部字段的命名规范
示例:
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PositionRisk {
pub entry_price: String,
pub mark_price: String,
}
在处理如下 JSON 时不报错:
{
"entryPrice": "30500.23",
"markPrice": "30450.55"
}
✅ 总结建议
| 项目 | 建议做法 |
|---|---|
| 字段命名风格 | 使用 snake_case |
| JSON 命名差异处理 | 使用 #[serde(rename_all)] 统一 |
| 单字段重命名 | 使用 #[serde(rename = "...")] |
✅ 补充:单字段重命名方式
#[serde(rename = "entryPrice")]
pub entry_price: String,
适用于仅重命名个别字段的情况。