【发布时间】:2019-08-13 08:37:36
【问题描述】:
我正在使用 Rust 中的 Serde 序列化程序,用于类似 JSON 的二进制格式。
它对序列使用不同的二进制编码,具体取决于每个元素是否具有相同的大小,或者它是否是具有混合元素大小的序列。
例如:
-
[1, 2, 3]:使用紧凑编码进行序列化,因为所有元素都序列化为相同的字节长度 -
[1, "two", ["a", 1]]:使用不同的编码进行序列化,因为每个元素都序列化为不同的字节长度
根据我对 Serde 的了解,它一次序列化一个元素,并且在序列序列化开始时仅可选地知道序列长度(通过在 Serializer 上调用 serialize_seq)。
是否有一个很好的模式来处理上述情况,在所有元素都被检查(并序列化以知道它们的字节长度)之前无法序列化序列?它还需要处理嵌套序列,如上例所示。
【问题讨论】:
-
您可以将所有元素存储在您的
SerializeSeq实例中,直到调用end,您将在其中进行实际的序列化。