我需要使用 33 字节的数组。看起来最多包含 32 个元素的数组序列化没有问题,但 33 字节数组导致:
error[E0277]: the trait bound `[u8; 33]: _::_serde::Deserialize<'_>` is not satisfied
--> src/main.rs:54:2
|
54 | foo: [u8; 33]
| ^^^ the trait `_::_serde::Deserialize<'_>` is not implemented for `[u8; 33]`
|
= help: the following implementations were found:
<&'a [u8] as _::_serde::Deserialize<'de>>
<[T; 0] as _::_serde::Deserialize<'de>>
<[T; 10] as _::_serde::Deserialize<'de>>
<[T; 11] as _::_serde::Deserialize<'de>>
and 30 others
= note: required by `_::_serde::de::MapAccess::next_value`
Run Code Online (Sandbox Code Playgroud)
他们显然认为 32 是一个停下来的好地方。如何添加对 33 个元素数组的支持?
我正在使用serde和bincode映射二进制结构.
#[macro_use]
extern crate serde_derive;
extern crate serde;
extern crate bincode;
#[derive(Serialize, Deserialize)]
struct Superblock {
magic: [u8; 16],
//reserved: [u8; 492],
crc: u32,
}
Run Code Online (Sandbox Code Playgroud)
事情按预期工作,但我无法映射保留字段.显然,固定大小的数组仅定义为最大32个字节的大小.
如何注册我的自定义大小的数组,以便填充反序列化?
serde + bincode是正确的方法吗?我需要控制字节顺序(bincode提供),我喜欢声明式样式.