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}