我正在使用一个struct
,它大致如下所示:
struct MyStruct {
// Various fields, most of which do not implement `Serialize` / `Deserialize`
}
struct MyError; // Yes, this implements `std::error::Error`
impl MyStruct {
fn from_bytes(bytes: [u8; 96]) -> Result<MyStruct, MyError> {
// Creates a `MyStruct` from an array of exactly 96 bytes.
// It returns a `MyError` upon failure.
}
fn to_bytes(&self) -> [u8; 96] {
// Serializes `MyStruct` into an array of exactly 96 bytes.
}
}
现在,我想让MyStruct
实现serde
的Serialize
和Deserialize
,直觉告诉我它应该很简单(我确实有一些函数已经序列化和反序列化了MyStruct
),但是经过几个小时混乱的试验和错误,我卡住了。
我想要的是MyStruct
实现Serialize
和Deserialize
,如果我调用bincode::serialize(my_struct)
,我希望它精确地表示为96字节(即,我希望避免支付无意义的8字节头的成本,该头总是说“下面是96字节的序列”:我已经知道我需要96个字节来表示MyStruct
!)。
1条答案
按热度按时间hgb9j2n61#
你的问题的第一部分可以完成如下:
第二部分比较坚韧,取决于您使用serde的格式。