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

Method iter_adjacent

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

Source from the content-addressed store, hash-verified

95 }
96
97 fn iter_adjacent(
98 &self,
99 node: GraphNode<NodeId>,
100 min_flag: EdgeFlags,
101 max_flag: EdgeFlags,
102 ) -> PristineResult<Self::Adj> {
103 let table = self.txn.open_multimap_table(GRAPH)?;
104 let key = encode_vertex(node.change.get(), node.start.get(), node.end.get());
105
106 let mut edges = Vec::new();
107 for v in table.get(&key)?.filter_map(|r| r.ok()) {
108 let bytes: &[u8; 24] = v.value();
109 let edge = deserialize_edge(bytes);
110 let flag = edge.flag();
111 if flag >= min_flag && flag <= max_flag {
112 edges.push(edge);
113 }
114 }
115
116 Ok(AdjIterator::new(edges))
117 }
118
119 fn find_block(&self, pos: Position<NodeId>) -> PristineResult<GraphNode<NodeId>> {
120 // Handle ROOT position specially - ROOT is a virtual span that doesn't

Callers

nothing calls this directly

Calls 6

encode_vertexFunction · 0.85
flagMethod · 0.80
deserialize_edgeFunction · 0.70
getMethod · 0.65
pushMethod · 0.45
iterMethod · 0.45

Tested by

no test coverage detected