(data: &[u8])
| 177 | } |
| 178 | |
| 179 | pub fn deserialize(data: &[u8]) -> Self { |
| 180 | let mut offset = 0; |
| 181 | |
| 182 | let node_type = deserialize_node_type(&data[offset..offset + 1]); |
| 183 | offset += 1; |
| 184 | let is_root = data[offset] == 1; |
| 185 | offset += 1; |
| 186 | let parent_offset = |
| 187 | u64::from_le_bytes(data[offset..offset + 8].try_into().unwrap()) as usize; |
| 188 | offset += 8; |
| 189 | let keys_len = read_length(&data[offset..offset + 4]); |
| 190 | offset += 4; |
| 191 | let values_len = read_length(&data[offset..offset + 4]); |
| 192 | offset += 4; |
| 193 | let num_children = read_length(&data[offset..offset + 4]); |
| 194 | offset += 4; |
| 195 | |
| 196 | let mut keys = Vec::with_capacity(keys_len); |
| 197 | for _ in 0..keys_len { |
| 198 | let key_size = read_length(&data[offset..offset + 4]) as usize; |
| 199 | offset += 4; |
| 200 | let key = K::deserialize(&data[offset..offset + key_size]); |
| 201 | offset += key_size; |
| 202 | keys.push(key); |
| 203 | } |
| 204 | |
| 205 | let mut values = Vec::with_capacity(values_len); |
| 206 | for _ in 0..values_len { |
| 207 | let value_size = read_length(&data[offset..offset + 4]) as usize; |
| 208 | offset += 4; |
| 209 | let value = if value_size > 0 { |
| 210 | Some(V::deserialize(&data[offset..offset + value_size])) |
| 211 | } else { |
| 212 | None |
| 213 | }; |
| 214 | offset += value_size; |
| 215 | values.push(value); |
| 216 | } |
| 217 | |
| 218 | let mut children = Vec::with_capacity(num_children); |
| 219 | for _ in 0..num_children { |
| 220 | let child_offset = usize::from_le_bytes(data[offset..offset + 8].try_into().unwrap()); |
| 221 | offset += 8; |
| 222 | children.push(child_offset); |
| 223 | } |
| 224 | |
| 225 | Node { |
| 226 | keys, |
| 227 | values, |
| 228 | children, |
| 229 | max_keys: MAX_KEYS, |
| 230 | node_type, |
| 231 | offset: 0, |
| 232 | is_root, |
| 233 | parent_offset: Some(parent_offset), |
| 234 | } |
| 235 | } |
| 236 |
nothing calls this directly
no test coverage detected