Rust

Serde та серіалізація

трейти serde, derive-макроси, JSON/YAML/TOML, кастомна (де)серіалізація, lifetimes з Cow, продуктивність

20 питань зі співбесід·
Mid-Level
1

Яка основна роль крейту serde в Rust?

Відповідь

Serde — це універсальний фреймворк серіалізації та десеріалізації для Rust. Його назва походить від "SERialize DEserialize". Він дозволяє перетворювати структури даних Rust у різні формати даних (JSON, YAML, TOML тощо) та назад ефективно й типобезпечно. Serde використовує систему трейтів Rust, щоб надати абстракцію без витрат у runtime.

2

Який правильний синтаксис для ввімкнення автоматичної серіалізації для struct за допомогою serde?

Відповідь

Атрибут #[derive(Serialize, Deserialize)] автоматично генерує реалізації трейтів Serialize і Deserialize для struct. Цей процедурний макрос аналізує структуру полів і генерує необхідний код під час компіляції. Потрібно імпортувати трейти з serde через use serde::{Serialize, Deserialize}.

3

Яку функцію слід використовувати для перетворення struct Rust на рядок JSON за допомогою serde_json?

Відповідь

Функція serde_json::to_string() перетворює значення, що реалізує Serialize, на рядок JSON. Вона повертає Result<String, Error>, оскільки серіалізація може зазнати невдачі в певних випадках. Для відформатованого виводу з відступами використовуйте serde_json::to_string_pretty(). Щоб записати безпосередньо у Writer, використовуйте serde_json::to_writer().

4

Як десеріалізувати рядок JSON у struct Rust за допомогою serde_json?

5

Який атрибут serde слід використовувати для перейменування поля під час серіалізації?

+17 питань зі співбесід

Опануй Rust для наступної співбесіди

Отримай доступ до всіх питань, flashcards, технічних тестів, вправ code review та симуляторів співбесід.

Почни безкоштовно