如何在距向量开头的偏移量处序列化数据

问题描述 投票:0回答:1

我想将数据序列化到缓冲区中,但不是从第一个字节开始,所以我尝试将切片传递给序列化器。

如果你像这样传递整个

Vec
,序列化器就会工作:

let mut buffer = Vec::new();
let mut serializer = Serializer::new(&mut buffer);

但是如果你传递一个切片,它就无法序列化,因为它的长度为零

let mut buffer = Vec::new();
let mut serializer = Serializer::new(&mut buffer[..]);

我可以通过调整缓冲区大小来修复序列化器,如下所示:

let mut buffer = Vec::new();
buffer.resize(20, 0);
let mut serializer = Serializer::new(&mut buffer[..]);

但是我无法弄清楚串行器向缓冲区写入了多少字节。

我感觉我失去了一些东西。我是否需要自定义实现

Write
特征才能实现此目的?

rust serialization slice serde
1个回答
0
投票

我明白了这一点,而且实际上已经非常接近了。

重要的部分是序列化器附加到缓冲区,因此如果您先调整缓冲区大小,然后将其传递给序列化器,它将附加序列化。

这有效,并开始在第 9 个字节写入序列化数据:

let mut buffer = Vec::new();
buffer.resize(8, 0);
let mut serializer = Serializer::new(&mut buffer);
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.