rust-nex/src/rmc/structures/list.rs

30 lines
778 B
Rust
Raw Normal View History

use std::io::{Read, Write};
use bytemuck::bytes_of;
2025-02-04 16:31:56 +01:00
use crate::endianness::{IS_BIG_ENDIAN, ReadExtensions};
use crate::rmc::structures::RmcSerialize;
impl<T: RmcSerialize> RmcSerialize for Vec<T>{
fn serialize(&self, writer: &mut dyn Write) -> crate::rmc::structures::Result<()> {
2025-02-06 17:54:38 +01:00
let u32_len = self.len() as u32;
writer.write_all(bytes_of(&u32_len))?;
for e in self{
e.serialize(writer)?;
}
Ok(())
}
2025-02-04 16:31:56 +01:00
fn deserialize(mut reader: &mut dyn Read) -> crate::rmc::structures::Result<Self> {
let len: u32 = reader.read_struct(IS_BIG_ENDIAN)?;
let mut vec = Vec::with_capacity(len as usize);
for _ in 0..len{
vec.push(T::deserialize(reader)?);
}
Ok(vec)
}
}