Трейты в стиле Serialize/Deserialize
Крейты вроде serde могут реализовывать сериализацию автоматически.
Можно получить через derive: ✅
// 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— стандартный интерфейс сообщества для сериализации. -
Когда не реализовывать: если тип содержит чувствительные данные, которые нельзя ошибочно сохранять на диск или отправлять по сети, подумайте о том, чтобы не реализовывать для этого типа Serialize/Deserialize.
Здесь те же проблемы безопасности, что и у
Debug, но поскольку сериализация часто используется в сетевом взаимодействии, ставки могут быть выше.