Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Трейты в стиле 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, но поскольку сериализация часто используется в сетевом взаимодействии, ставки могут быть выше.