Section courante

A propos

Section administrative du site

Fiche technique
Type de produit : Cadre d'application
Langage de programmation : Rust
Auteur : Communauté
Licence : Apache 2.0/MIT
Date de publication : 2017 à maintenant
Site Web : https://serde.rs/

Introduction

Le Serde est un cadre d'application permettant de sérialiser et de désérialiser les structures de données Rust de manière efficace et générique.

L'écosystème Serde se compose de structures de données capables de se sérialiser et de se désérialiser elles-mêmes, ainsi que de formats de données capables de sérialiser et de désérialiser d'autres éléments. Serde fournit la couche par laquelle ces deux groupes interagissent, permettant à toute structure de données prise en charge d'être sérialisée et désérialisée dans n'importe quel format de données pris en charge.

Conception

Là où de nombreux autres langages s'appuient sur la réflexion à l'exécution pour sérialiser les données, Serde s'appuie sur le puissant système de traits de Rust. Une structure de données capable de se sérialiser et de se désérialiser elle-même implémente les traits Serialize et Deserialize de Serde (ou utilise l'attribut derive de Serde pour générer automatiquement des implémentations à la compilation). Cela évite toute surcharge liée à la réflexion ou aux informations de type à l'exécution. En fait, dans de nombreuses situations, l'interaction entre la structure et le format des données peut être entièrement optimisée par le compilateur Rust, permettant à la sérialisation Serde d'être aussi rapide qu'un sérialiseur manuscrit pour la sélection spécifique de la structure et du format des données.

Formats de données

Voici une liste partielle des formats de données implémentés pour Serde par la communauté :

Structures de données

Prêt à l'emploi, Serde est capable de sérialiser et de désérialiser les types de données Rust courants dans tous les formats mentionnés ci-dessus. Par exemple, String, &str, usize, Vec<T> et HashMap<K,V> sont tous pris en charge. De plus, Serde fournit une macro derive pour générer des implémentations de sérialisation pour les structures de votre programme. L'utilisation de la macro derive se déroule comme suit :

  1. use serde::{Serialize, Deserialize};
  2.  
  3. #[derive(Serialize, Deserialize, Debug)]
  4. struct Point {
  5.     x: i32,
  6.     y: i32,
  7. }
  8.  
  9. fn main() {
  10.     let point = Point { x: 1, y: 2 };
  11.  
  12.     // Convertissez le point en une chaîne de caractères JSON.
  13.     let serialized = serde_json::to_string(&point).unwrap();
  14.  
  15.     // Affichages sérialisées = {"x":1,"y":2}
  16.     println!("sérialiser = {}", serialized);
  17.  
  18.     // Convertir la chaîne de caractères JSON en point.
  19.     let deserialized: Point = serde_json::from_str(&serialized).unwrap();
  20.  
  21.     // Affichages désérialisées = Point { x: 1, y: 2 }
  22.     println!("desérialisé = {:?}", deserialized);
  23. }



Dernière mise à jour : Samedi, le 4 janvier 2025