Serde zum Serialisieren von Strukturen mit Ndarray-Feldern verwenden

Nilesh Katuwal 18 August 2022
  1. Erstellen von serde Arrays in Rust
  2. Beispiel Serde in Rust
Serde zum Serialisieren von Strukturen mit Ndarray-Feldern verwenden

In diesem Artikel erfahren Sie, wie Sie mit serde Strukturen serialisieren, die ndarray-Felder enthalten.

Erstellen von serde Arrays in Rust

Verwenden Sie Serde, um Arrays zu serialisieren und zu deserialisieren, die entweder const, generisch oder beliebig groß sind. Serde ist ein starkes Framework, das Laufzeittypinformationen überflüssig macht, indem es Serialisierungsbibliotheken erlaubt, Rust-Datenstrukturen generisch zu serialisieren.

Darüber hinaus kann in vielen Zusammenhängen das normalerweise zwischen Serializern und Serializern verwendete Handshake-Protokoll vollständig optimiert werden, sodass Serde mit etwa der gleichen Geschwindigkeit wie ein für einen bestimmten Typ von Hand entwickelter Serializer arbeiten kann.

Serde unterstützt eine Vielzahl von Typen; es bietet jedoch keine Unterstützung für Arrays, die const-Generika verwenden. Diese Bibliothek bietet ein Modul, das bei Verwendung in Verbindung mit dem with-Attribut von Serde Unterstützung für die Funktionalität hinzufügt.

Beispiel Serde in Rust

Das Folgende ist eine einfache Demonstration des Generierens und Analysierens von JSON mit Hilfe der JSON-Bibliothek serde, die hinter den Kulissen Serde verwendet. Beginnen wir mit der Datei Cargo.toml, um die Dinge ins Rollen zu bringen.

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

Im vorherigen Beispiel war die In-Memory-Darstellung des JSON-Werts ein serde json::Value. Serde kann jedoch auch zu und von Standard-Rust-Typen serialisieren.

Serde verfügt über hocheffektive Bibliotheken zur Codegenerierung, die mit Stable und Nightly Rust kompatibel sind. Diese Bibliotheken beseitigen einen erheblichen Teil der Schwierigkeiten, die mit der manuellen Einführung der Serialisierung und Deserialisierung für einen bestimmten Typ verbunden sind.