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}