
Serde & Serialization
serde traits, derive macros, JSON/YAML/TOML, custom (de)serialization, lifetimes avec Cow, performance
1Quel est le rôle principal de la crate serde en Rust ?
Quel est le rôle principal de la crate serde en Rust ?
Réponse
Serde est un framework de sérialisation et désérialisation générique pour Rust. Son nom vient de "SERialize DEserialize". Il permet de convertir des structures de données Rust vers et depuis différents formats de données (JSON, YAML, TOML, etc.) de manière efficace et type-safe. Serde utilise le système de traits de Rust pour fournir une abstraction sans coût runtime.
2Quelle est la syntaxe correcte pour activer la sérialisation automatique sur une struct avec serde ?
Quelle est la syntaxe correcte pour activer la sérialisation automatique sur une struct avec serde ?
Réponse
L'attribut #[derive(Serialize, Deserialize)] permet de générer automatiquement les implémentations des traits Serialize et Deserialize pour une struct. Cette macro procédurale analyse la structure des champs et génère le code nécessaire à la compilation. Il est nécessaire d'importer les traits depuis serde avec use serde::{Serialize, Deserialize}.
3Quelle fonction utiliser pour convertir une struct Rust en chaîne JSON avec serde_json ?
Quelle fonction utiliser pour convertir une struct Rust en chaîne JSON avec serde_json ?
Réponse
La fonction serde_json::to_string() convertit une valeur implémentant Serialize en une chaîne JSON. Elle retourne un Result<String, Error> car la sérialisation peut échouer dans certains cas. Pour une sortie formatée avec indentation, utiliser serde_json::to_string_pretty(). Pour écrire directement dans un Writer, utiliser serde_json::to_writer().
Comment désérialiser une chaîne JSON vers une struct Rust avec serde_json ?
Quel attribut serde utiliser pour renommer un champ lors de la sérialisation ?
+17 questions d'entretien
Autres sujets d'entretien Rust
Les bases de Rust
Ownership & Borrowing
Structs & Enums
Gestion des erreurs
Collections
Modules & Packages
Traits
Generics
Lifetimes
Iterators & Closures
Smart Pointers
Concurrency Basics
async/await
Testing
Cargo & Ecosystem
Pattern Matching
Macros
Unsafe Rust
Traits Avancés
Lifetimes Avancés
Type System
Tokio & Async I/O
Optimisation de Performance
Memory Management
Web Frameworks
Database Integration
Design Patterns Rust
Maîtrise Rust pour ton prochain entretien
Accède à toutes les questions, flashcards, tests techniques, exercices de code review et simulateurs d'entretien.
Commencer gratuitement