datex_core/global/protocol_structures/
serializable.rs

1use crate::stdlib::vec::Vec;
2use binrw::io::Cursor;
3use binrw::{
4    BinWrite,
5    meta::{ReadEndian, WriteEndian},
6};
7use core::prelude::rust_2024::*;
8
9pub trait Serializable: BinWrite + ReadEndian + WriteEndian {
10    fn to_bytes(&self) -> Result<Vec<u8>, binrw::Error>
11    where
12        for<'a> Self::Args<'a>: Default,
13    {
14        let mut writer = Cursor::new(Vec::new());
15        self.write(&mut writer)?;
16        let bytes = writer.into_inner();
17        Ok(bytes)
18    }
19}