fbe/
model.rs

1//! FBE model trait for struct serialization
2
3use crate::buffer::{ReadBuffer, WriteBuffer};
4
5/// Base trait for FBE struct models
6pub trait Model {
7    /// The value type this model serializes
8    type ValueType;
9
10    /// Get FBE type ID
11    fn fbe_type(&self) -> usize;
12
13    /// Get FBE offset
14    fn fbe_offset(&self) -> usize;
15
16    /// Verify model
17    fn verify(&self) -> bool;
18
19    /// Get model size
20    fn fbe_size(&self) -> usize;
21
22    /// Serialize value and return serialized size
23    fn serialize(&mut self, value: &Self::ValueType) -> usize;
24
25    /// Deserialize value and return (value, deserialized size)
26    fn deserialize(&self) -> (Self::ValueType, usize);
27
28    /// Move to next position (for streaming)
29    fn next(&mut self, size: usize);
30
31    /// Get write buffer reference
32    fn buffer_mut(&mut self) -> &mut WriteBuffer;
33
34    /// Get read buffer reference
35    fn buffer(&self) -> &ReadBuffer;
36}