Utilice Serde para serializar estructuras que contengan campos Ndarray

Nilesh Katuwal 18 agosto 2022
  1. Crear arrays serde en Rust
  2. Ejemplo de Serde en Rust
Utilice Serde para serializar estructuras que contengan campos Ndarray

En este artículo, aprenderemos sobre el uso de serde para serializar estructuras que contienen campos ndarray.

Crear arrays serde en Rust

Utilice Serde para serializar y deserializar matrices que son const, genéricas o arbitrariamente grandes. Serde es un marco sólido que elimina la necesidad de información de tipo de tiempo de ejecución al permitir que las bibliotecas de serialización serialicen estructuras de datos de Rust de forma genérica.

Además, en muchos contextos, el protocolo de negociación que normalmente se usa entre serializadores y serializadores se puede optimizar por completo, lo que permite que Serde opere aproximadamente a la misma velocidad que un serializador diseñado a mano para un tipo particular.

Serde tiene soporte para una amplia variedad de tipos; sin embargo, no brinda soporte para arreglos que usan genéricos const. Esta biblioteca ofrece un módulo que, cuando se usa junto con el atributo with de Serde, agrega soporte para la funcionalidad.

Ejemplo de Serde en Rust

La siguiente es una demostración sencilla de cómo generar y analizar JSON con la ayuda de la biblioteca JSON serde, que, entre bastidores, utiliza Serde. Comencemos con el archivo Cargo.toml para poner las cosas en marcha.

[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"] }

En el ejemplo anterior, la representación en memoria del valor JSON era un serde json::Value. Sin embargo, Serde también puede serializar hacia y desde tipos de Rust estándar.

Serde posee bibliotecas de generación de código altamente efectivas compatibles con Stable y Nightly Rust. Estas bibliotecas eliminan una parte significativa de la dificultad asociada con la implementación manual de la serialización y deserialización para un tipo específico.