2.2.2.10 Serialize 与 Deserialize

10-Serialize 与 Deserialize — Comprehensive Rust

译文 · 基于 Comprehensive Rust

原文链接: https://google.github.io/comprehensive-rust/idiomatic/foundations-api-design/predictable-api/common-traits/serde.html

2.2.2.10 Serialize 与 Deserialize

像 serde 这样的 crate 可自动实现序列化。

可派生:✅

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
// Copyright 2025 Google LLC
// SPDX-License-Identifier: Apache-2.0
#[derive(Serialize, Deserialize)]
struct ExtraData {
    fav_color: String,
    name_of_dog: String,
}

#[derive(Serialize, Deserialize)]
struct Data {
    name: String,
    age: usize,
    extra_data: ExtraData,
}
  • 为类型提供序列化与反序列化功能,使 Rust 数据类型可与 JSON 等数据格式互相转换。

  • 标准库没有内置序列化功能,但 serde crate 是社区做序列化的标准接口。

  • 何时不要实现:若类型包含不应被错误地保存到磁盘或通过网络发送的敏感数据,考虑不为该类型实现 Serialize/Deserialize。

    与 Debug 有相同安全顾虑,但鉴于序列化常用于网络,风险可能更高。

最后修改 August 11, 2026: 更新 (70a5af133)