什么是序列化函数的好签名

  • 本文关键字:函数 序列化 rust
  • 更新时间 :
  • 英文 :


我正在尝试设计一个简单的序列化函数:

pub fn serialize(buffer: &[u8]) -> std::result::Result<(), ()> {
Ok(())
}

由于传递给它的缓冲区无法处理序列化所需的大小,因此上述操作不正常。

什么是序列化函数的好签名?我应该使用vec吗?

我正在尝试序列化RTSP消息。它就像HTTP。文本不多,应该很简单。

使用由std::io::Write特性指定的编写器

pub fn serialize<W: Write>(writer: &mut W) -> Result<()> {
writer.write_all(&[1, 2, 3, 4])?;
Ok(())
}
// or
pub fn serialize(writer: &mut dyn Write) -> Result<()> {
writer.write_all(&[1, 2, 3, 4])?;
Ok(())
}

这使得它在许多类型上是通用的,这些类型可以用作"em";面向字节的汇"类似Files、TcpStreams和正常Vec<u8>s。

fn main() {
let mut buffer = vec![];
serialize(&mut buffer).unwrap();
println!("{:?}", buffer);
}
[1, 2, 3, 4]

看到它在操场上奔跑。

最新更新