簡體   English   中英

如何在 Rust 中序列化原始類型?

[英]How to serialize primitive types in Rust?

使用serde序列化原始類型的正確方法是什么? 例如,以下代碼片段會引發錯誤:

extern crate serde; // 1.0.137
use serde::Serialize;

fn main ()
{
    let test = true;
    let serialized: Vec<u8> = vec![];
    test.serialize(&mut serialized).unwrap();
    
}

錯誤是:

錯誤[E0277]: 特征綁定&mut Vec<u8>: Serializer程序

如何使用serde將任何原始類型序列化為 Rust 中的字節向量/切片?

Serde 為序列化提供了兩件事: Serialize trait 和Serializer trait。 Serialize trait 用於描述任何可以序列化的值,例如test布爾值,而Serializer trait 用於定義用於序列化的數據格式。 這就是為什么調用serialize需要一個Serializer器:serde 沒有內置的數據格式。

您可以考慮使用的一件事是bincode ,它有一個方便的serialize函數,可以構造 bincode Serializer並創建一個 vec:

let serialized: Vec<u8> = bincode::serialize(test).unwrap();

如果您有興趣,Serde 的文檔會列出更多數據格式

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM