Utiliser Serde pour sérialiser des structures contenant des champs Ndarray

Nilesh Katuwal 30 janvier 2023
  1. Créer des tableaux serde dans Rust
  2. Exemple de Serde à Rust
Utiliser Serde pour sérialiser des structures contenant des champs Ndarray

Dans cet article, nous allons apprendre à utiliser serde pour sérialiser des structures contenant des champs ndarray.

Créer des tableaux serde dans Rust

Utilisez Serde pour sérialiser et désérialiser des tableaux qui sont soit const, génériques ou arbitrairement énormes. Serde est un cadre solide qui élimine le besoin d’informations de type d’exécution en permettant aux bibliothèques de sérialisation de sérialiser les structures de données Rust de manière générique.

De plus, dans de nombreux contextes, le protocole de prise de contact normalement utilisé entre les sérialiseurs et les sérialiseurs peut être entièrement optimisé, permettant à Serde de fonctionner à peu près à la même vitesse qu’un sérialiseur conçu à la main pour un type particulier.

Serde prend en charge une grande variété de types ; cependant, il ne prend pas en charge les tableaux qui utilisent des génériques const. Cette bibliothèque propose un module qui, lorsqu’il est utilisé conjointement avec l’attribut with de Serde, ajoute la prise en charge de la fonctionnalité.

Exemple de Serde à Rust

Ce qui suit est une démonstration simple de la génération et de l’analyse de JSON à l’aide de la bibliothèque JSON serde, qui, en coulisse, utilise Serde. Commençons par le fichier Cargo.toml pour faire avancer les choses.

[package]
name = "example_serde"
version = "0.1.0"
authors = ["example@abc.com>"]

[dependencies]
serde_json = "0.8"
[dependencies]
ndarray = { version = "0.13.1", features = ["serde"] }

Dans l’exemple précédent, la représentation en mémoire de la valeur JSON était une serde json::Value. Cependant, Serde peut également sérialiser vers et depuis les types Rust standard.

Serde possède des bibliothèques de génération de code très efficaces compatibles avec Stable et Nightly Rust. Ces bibliothèques suppriment une partie importante de la difficulté associée au déploiement manuel de la sérialisation et de la désérialisation pour un type spécifique.