MCPcopy Create free account
hub / github.com/atomicdotdev/atomic / serialize_edge

Function serialize_edge

atomic-core/src/pristine/txn/helpers.rs:20–32  ·  view source on GitHub ↗
(edge: &SerializedGraphEdge)

Source from the content-addressed store, hash-verified

18/// Layout: [flags:8 | pos:56][change_id:64][introduced_by:64]
19#[inline]
20pub fn serialize_edge(edge: &SerializedGraphEdge) -> [u8; 24] {
21 let mut bytes = [0u8; 24];
22 let dest = edge.dest();
23 let flag = edge.flag();
24 let introduced_by = edge.introduced_by();
25
26 // Pack flag into high byte of first u64, position in low 56 bits
27 let flag_and_pos = ((flag.bits() as u64) << 56) | (dest.pos.get() & ((1 << 56) - 1));
28 bytes[0..8].copy_from_slice(&flag_and_pos.to_le_bytes());
29 bytes[8..16].copy_from_slice(&dest.change.get().to_le_bytes());
30 bytes[16..24].copy_from_slice(&introduced_by.get().to_le_bytes());
31 bytes
32}
33
34/// Deserialize bytes to a SerializedGraphEdge
35#[inline]

Callers 7

test_edge_all_flagsFunction · 0.85
test_edge_max_positionFunction · 0.85
put_graphMethod · 0.85
del_graphMethod · 0.85
put_inode_graphMethod · 0.85
del_inode_graphMethod · 0.85

Calls 5

flagMethod · 0.80
to_le_bytesMethod · 0.80
getMethod · 0.65
destMethod · 0.45
introduced_byMethod · 0.45

Tested by 3

test_edge_all_flagsFunction · 0.68
test_edge_max_positionFunction · 0.68