如何 deserialize/serialize 构造为没有键的数组

How to deserialize/serialize struct as array without keys

我如何 de/serialize 构建没有键的结构?因为我不会改变字段的顺序,索引可以作为键来减少有效负载的大小。

我正在使用 serde_json 和 ciborium crates,它们都具有顶级数组值。

例如,

正在关注 cbor/json

["string1", 1, 1.1, [4, 34, 4, 4]]

应该转换成这个

struct Foo {
    a: String,
    b: u128,
    c: f64,
    d: Vec<u8>,
}

我可以通过使用 ciborium crate 的 Value::array enum 手动完成此操作,但最终我将编写更多代码并且将无法使用 serde_bytes crate 有效解码 Vec<u8>

只需使用serde_tuple that is dedicated to "De/serialize struct as an array of values" issue #637:

#[derive(serde_tuple::Serialize_tuple, serde_tuple::Deserialize_tuple)]
struct Foo {
    a: String,
    b: u128,
    c: f64,
    d: Vec<u8>,
}