MCPcopy Create free account
hub / github.com/carsonpo/haystackdb / serialize

Method serialize

src/structures/mmap_tree/node.rs:140–177  ·  view source on GitHub ↗
(&self)

Source from the content-addressed store, hash-verified

138 }
139
140 pub fn serialize(&self) -> Vec<u8> {
141 let mut serialized = Vec::with_capacity(1_000_000);
142 serialized.extend_from_slice(&serialize_node_type(&self.node_type));
143 serialized.push(self.is_root as u8);
144 serialized.extend_from_slice(&(self.parent_offset.unwrap_or(0) as u64).to_le_bytes());
145 serialize_length(&mut serialized, self.keys.len() as u32);
146 serialize_length(&mut serialized, self.values.len() as u32);
147 serialize_length(&mut serialized, self.children.len() as u32);
148
149 for key in &self.keys {
150 let serialized_key = key.serialize();
151 serialized.extend_from_slice(&serialize_length(
152 &mut Vec::new(),
153 serialized_key.len() as u32,
154 ));
155 serialized.extend_from_slice(&serialized_key);
156 }
157
158 for value in &self.values {
159 match value {
160 Some(value) => {
161 let serialized_value = value.serialize();
162 serialized.extend_from_slice(&serialize_length(
163 &mut Vec::new(),
164 serialized_value.len() as u32,
165 ));
166 serialized.extend_from_slice(&serialized_value);
167 }
168 None => serialized.extend_from_slice(&0u32.to_le_bytes()),
169 }
170 }
171
172 for child in &self.children {
173 serialized.extend_from_slice(&child.to_le_bytes());
174 }
175
176 serialized
177 }
178
179 pub fn deserialize(data: &[u8]) -> Self {
180 let mut offset = 0;

Callers 2

store_nodeMethod · 0.45

Calls 4

serialize_node_typeFunction · 0.85
serialize_lengthFunction · 0.85
pushMethod · 0.80
lenMethod · 0.80

Tested by 1