Skip to main content

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}