(&self, node: NodeRef)
| 209 | |
| 210 | #[inline] |
| 211 | pub fn resolve_node_ref(&self, node: NodeRef) -> Option<VID> { |
| 212 | let vid = match node { |
| 213 | NodeRef::Internal(vid) => Some(vid), |
| 214 | NodeRef::External(GidRef::U64(gid)) => self.logical_to_physical.get_u64(gid), |
| 215 | NodeRef::External(GidRef::Str(string)) => self |
| 216 | .logical_to_physical |
| 217 | .get_str(string) |
| 218 | .or_else(|| self.logical_to_physical.get_u64(string.id())), |
| 219 | }?; |
| 220 | |
| 221 | // VIDs in the resolver may not be initialised yet, need to double-check the node actually exists! |
| 222 | let nodes = self.storage().nodes(); |
| 223 | let (page_id, pos) = nodes.resolve_pos(vid); |
| 224 | let node_page = nodes.get_segment(page_id)?; |
| 225 | |
| 226 | if pos.0 < node_page.num_nodes() { |
| 227 | Some(vid) |
| 228 | } else { |
| 229 | None |
| 230 | } |
| 231 | } |
| 232 | |
| 233 | #[inline] |
| 234 | pub fn internal_num_nodes(&self, layer_ids: &LayerIds) -> usize { |
no test coverage detected