使用 Serde 序列化包含 Ndarray 欄位的結構
Nilesh Katuwal
2023年1月30日
2022年7月18日
在本文中,我們將學習使用 serde
來序列化包含 ndarray
欄位的結構。
在 Rust 中建立 serde
陣列
使用 Serde 序列化和反序列化 const
、通用或任意巨大的陣列。Serde 是一個強大的框架,它通過允許序列化庫對 Rust 資料結構進行通用序列化,從而消除了對執行時型別資訊的需求。
此外,在許多情況下,通常在序列器和序列器之間使用的握手協議可以完全優化,從而允許 Serde 以與為特定型別手動設計的序列器大致相同的速度執行。
Serde 支援多種型別;但是,它不支援使用 const
泛型的陣列。該庫提供了一個模組,當與 Serde 的 with
屬性結合使用時,可以增加對該功能的支援。
Rust 中的 Serde 示例
下面是在 serde
JSON 庫的幫助下生成和解析 JSON 的簡單演示,該庫在幕後使用了 Serde。讓我們從 Cargo.toml
檔案開始,讓事情順利進行。
[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"] }
在前面的示例中,JSON 值的記憶體表示是 serde json::Value
。然而,Serde 也可以在標準 Rust 型別之間進行序列化。
Serde 擁有與 Stable 和 Nightly Rust 相容的高效程式碼生成庫。這些庫消除了與手動推出特定型別的序列化和反序列化相關的很大一部分困難。