datex_core/global/protocol_structures/
serializable.rs

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