我正在尝试设计一个简单的序列化函数:
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";面向字节的汇"类似File
s、TcpStream
s和正常Vec<u8>
s。
fn main() {
let mut buffer = vec![];
serialize(&mut buffer).unwrap();
println!("{:?}", buffer);
}
[1, 2, 3, 4]
看到它在操场上奔跑。