serializer/machine/traits.rs
1//! DX-Machine traits for serialization and deserialization
2
3use super::types::Result;
4
5/// Trait for types that can be deserialized from DX-Machine format
6pub trait DxMachineDeserialize: Sized {
7 /// Deserialize from byte slice (zero-copy)
8 fn from_bytes(bytes: &[u8]) -> Result<&Self>;
9
10 /// Get the minimum buffer size required
11 fn min_size() -> usize;
12}
13
14/// Trait for types that can be serialized to DX-Machine format
15pub trait DxMachineSerialize {
16 /// Serialize to byte buffer (in-place)
17 fn serialize_to(&self, buffer: &mut Vec<u8>);
18
19 /// Get the estimated serialized size
20 fn serialized_size(&self) -> usize;
21}