我需要创建一个结构,将对象序列化为字节并附加到单个文件,然后加载它。
fn serialize_and_save<T: Serialize> (file:&mut File, value:T) {
let encoded = bincode::serialize(value)?;
file.write_all(&encoded)?; // the file may have some T objects already
Ok(())
}
您可以在此处使用许多序列化格式。为了满足您的这两个问题,您需要一种序列化格式,其中可以唯一确定条目的结尾,以便可以从流中读取下一项。我不相信 Bincode 在一般情况下是这样的格式。
serde_cbor_2
crate 确实通过其 StreamDeserializer
结构满足了这一需求。 serde_json
也为 JSON 提供了这样的结构,但 JSON 通常更冗长并且不太适合字节字符串。
当然,您还可以使用许多其他格式,但是通过使用 CBOR 或 JSON 等标准,您可以增加与其他实现兼容的可能性以及良好的高性能序列化器实现的可用性。