| 20 | /// Deserialize bytes to a SerializedGraphEdge |
| 21 | #[inline] |
| 22 | fn deserialize_edge(bytes: &[u8; 24]) -> SerializedGraphEdge { |
| 23 | let flag_and_pos = u64::from_le_bytes(bytes[0..8].try_into().unwrap()); |
| 24 | let change_id = u64::from_le_bytes(bytes[8..16].try_into().unwrap()); |
| 25 | let introduced_by = u64::from_le_bytes(bytes[16..24].try_into().unwrap()); |
| 26 | |
| 27 | let flag = EdgeFlags::from_bits_truncate((flag_and_pos >> 56) as u8); |
| 28 | let pos = flag_and_pos & ((1 << 56) - 1); |
| 29 | |
| 30 | let dest = Position::new(NodeId::new(change_id), ChangePosition::new(pos)); |
| 31 | SerializedGraphEdge::new(flag, dest, NodeId::new(introduced_by)) |
| 32 | } |
| 33 | |
| 34 | // ═══════════════════════════════════════════════════════════════════════ |
| 35 | // InodeGraphOps Implementation for ReadTxn |