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

Method iter_adjacent

atomic-core/src/pristine/txn/write/graph.rs:47–67  ·  view source on GitHub ↗
(
        &self,
        node: GraphNode<NodeId>,
        min_flag: EdgeFlags,
        max_flag: EdgeFlags,
    )

Source from the content-addressed store, hash-verified

45 }
46
47 fn iter_adjacent(
48 &self,
49 node: GraphNode<NodeId>,
50 min_flag: EdgeFlags,
51 max_flag: EdgeFlags,
52 ) -> PristineResult<Self::Adj> {
53 let table = self.txn.open_multimap_table(GRAPH)?;
54 let key = encode_vertex(node.change.get(), node.start.get(), node.end.get());
55
56 let mut edges = Vec::new();
57 for v in table.get(&key)?.filter_map(|r| r.ok()) {
58 let bytes: &[u8; 24] = v.value();
59 let edge = deserialize_edge(bytes);
60 let flag = edge.flag();
61 if flag >= min_flag && flag <= max_flag {
62 edges.push(edge);
63 }
64 }
65
66 Ok(AdjIterator::new(edges))
67 }
68
69 fn find_block(&self, pos: Position<NodeId>) -> PristineResult<GraphNode<NodeId>> {
70 // Handle ROOT position specially - ROOT is a virtual span that doesn't

Callers

nothing calls this directly

Calls 5

encode_vertexFunction · 0.85
flagMethod · 0.80
getMethod · 0.65
deserialize_edgeFunction · 0.50
pushMethod · 0.45

Tested by

no test coverage detected