在Rust中将结构体转换为字节数组,以及从字节数组转换回结构体

4

我正在使用Rust编写一个涉及通过TCP连接发送数据的程序。我无法弄清楚如何将结构体转换为字节数组并反向操作。其他解决方案只能将其转换为u8,但由于我对Rust比较新(只学了3个月),所以无法想出正确的方法。希望你们可以提供一种可行的方式。


bincode是您所需的,或者msgpack。 - Stargateur
1个回答

9

您可以使用bincode将结构体转换为字节,反之亦然。它是基于serde框架构建的:

use serde::{Serialize, Deserialize};

#[derive(Serialize, Deserialize)]
struct Entity {
    x: f32,
    y: f32,
}

fn main() {
    let entity = Entity { x: 1.5, y: 1.5 };
    let encoded: Vec<u8> = bincode::serialize(&entity).unwrap();
    let decoded: Entity = bincode::deserialize(&encoded[..]).unwrap();
}

这实际上是一个相当干净的解决方案。谢谢! - Oishik Das

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接