
Serde та серіалізація
трейти serde, derive-макроси, JSON/YAML/TOML, кастомна (де)серіалізація, lifetimes з Cow, продуктивність
1Яка основна роль крейту serde в Rust?
Яка основна роль крейту serde в Rust?
Відповідь
Serde — це універсальний фреймворк серіалізації та десеріалізації для Rust. Його назва походить від "SERialize DEserialize". Він дозволяє перетворювати структури даних Rust у різні формати даних (JSON, YAML, TOML тощо) та назад ефективно й типобезпечно. Serde використовує систему трейтів Rust, щоб надати абстракцію без витрат у runtime.
2Який правильний синтаксис для ввімкнення автоматичної серіалізації для struct за допомогою serde?
Який правильний синтаксис для ввімкнення автоматичної серіалізації для struct за допомогою serde?
Відповідь
Атрибут #[derive(Serialize, Deserialize)] автоматично генерує реалізації трейтів Serialize і Deserialize для struct. Цей процедурний макрос аналізує структуру полів і генерує необхідний код під час компіляції. Потрібно імпортувати трейти з serde через use serde::{Serialize, Deserialize}.
3Яку функцію слід використовувати для перетворення struct Rust на рядок JSON за допомогою serde_json?
Яку функцію слід використовувати для перетворення struct Rust на рядок JSON за допомогою serde_json?
Відповідь
Функція serde_json::to_string() перетворює значення, що реалізує Serialize, на рядок JSON. Вона повертає Result<String, Error>, оскільки серіалізація може зазнати невдачі в певних випадках. Для відформатованого виводу з відступами використовуйте serde_json::to_string_pretty(). Щоб записати безпосередньо у Writer, використовуйте serde_json::to_writer().
Як десеріалізувати рядок JSON у struct Rust за допомогою serde_json?
Який атрибут serde слід використовувати для перейменування поля під час серіалізації?
+17 питань зі співбесід
Інші теми співбесід Rust
Основи Rust
Ownership & Borrowing
Structs & Enums
Обробка помилок
Колекції
Модулі та пакети
Traits
Generics
Lifetimes
Iterators & Closures
Smart Pointers
Concurrency Basics
async/await
Testing
Cargo & Ecosystem
Pattern Matching
Макроси
Unsafe Rust
Просунуті trait'и
Просунуті Lifetimes
Type System
Tokio & Async I/O
Оптимізація продуктивності
Memory Management
Web Frameworks
Database Integration
Патерни проєктування Rust
Опануй Rust для наступної співбесіди
Отримай доступ до всіх питань, flashcards, технічних тестів, вправ code review та симуляторів співбесід.
Почни безкоштовно