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

Method iter_forward

atomic-core/src/pristine/traits/graph.rs:201–232  ·  view source on GitHub ↗

Iterate forward (non-parent) edges from a vertex. Returns typed [`ForwardEdge`] values. When `include_deleted` is true, deleted edges (`BlockDeleted`, `FolderDeleted`) are included; otherwise they are filtered out. This is the typed replacement for [`iter_adjacent`](Self::iter_adjacent) with forward-edge flag ranges. New code should prefer this over `iter_adjacent`.

(
        &self,
        node: GraphNode<NodeId>,
        include_deleted: bool,
    )

Source from the content-addressed store, hash-verified

199 /// with forward-edge flag ranges. New code should prefer this over
200 /// `iter_adjacent`.
201 fn iter_forward(
202 &self,
203 node: GraphNode<NodeId>,
204 include_deleted: bool,
205 ) -> Result<Vec<ForwardEdge>, PristineError> {
206 // Flag-range bounds:
207 // alive only → [0x00, 0x14] (empty ..= PSEUDO|FOLDER)
208 // with deleted → [0x00, 0x90] (empty ..= DELETED|FOLDER)
209 //
210 // The wider range may include PARENT edges (0x20–0x34) when
211 // include_deleted is true; the loop filters them out.
212 let min_flag = EdgeFlags::empty();
213 let max_flag = if include_deleted {
214 EdgeFlags::DELETED | EdgeFlags::FOLDER
215 } else {
216 EdgeFlags::PSEUDO | EdgeFlags::FOLDER
217 };
218
219 let adj = self.iter_adjacent(node, min_flag, max_flag)?;
220 let mut result = Vec::new();
221 for edge_result in adj {
222 let edge = edge_result?;
223 // Skip any parent edges that snuck into the range
224 if edge.flag().contains(EdgeFlags::PARENT) {
225 continue;
226 }
227 if let Some(forward) = ForwardEdge::from_serialized(&edge) {
228 result.push(forward);
229 }
230 }
231 Ok(result)
232 }
233
234 /// Iterate parent (reverse) edges of a vertex.
235 ///

Implementers 8

context.rsatomic-core/src/record/context.rs
retrieve.rsatomic-core/src/record/workflow/retrie
engine.rsatomic-core/src/merge/engine.rs
view_graph.rsatomic-core/src/pristine/view_graph.rs
read.rsatomic-core/src/pristine/txn/read.rs
graph.rsatomic-core/src/pristine/txn/write/gra
graph_tests.rsatomic-core/src/pristine/traits/tests/
graph_batch.rsatomic-core/src/apply/graph_batch.rs

Calls 4

flagMethod · 0.80
iter_adjacentMethod · 0.45
containsMethod · 0.45
pushMethod · 0.45