grapes/map_graph/
node_iter.rs1use crate::graph;
2use crate::map_graph::{EdgeEntry, NodeEntry, NodeRef};
3use std::hash::Hash;
4
5#[must_use]
9pub struct GraphNodes<
10 'a,
11 NodeKey: Hash + Eq + Clone,
12 NodeData: Clone,
13 EdgeKey: Hash + Eq + Clone,
14 EdgeData: Clone,
15> {
16 inner: graph::GraphNodes<'a, NodeEntry<NodeKey, NodeData>, EdgeEntry<EdgeKey, EdgeData>>,
17}
18
19impl<
20 'a,
21 NodeKey: Hash + Eq + Clone,
22 NodeData: Clone,
23 EdgeKey: Hash + Eq + Clone,
24 EdgeData: Clone,
25 > GraphNodes<'a, NodeKey, NodeData, EdgeKey, EdgeData>
26{
27 pub fn new(
28 inner: graph::GraphNodes<'a, NodeEntry<NodeKey, NodeData>, EdgeEntry<EdgeKey, EdgeData>>,
29 ) -> Self {
30 Self { inner }
31 }
32}
33
34impl<
35 'a,
36 NodeKey: Hash + Eq + Clone,
37 NodeData: Clone,
38 EdgeKey: Hash + Eq + Clone,
39 EdgeData: Clone,
40 > Iterator for GraphNodes<'a, NodeKey, NodeData, EdgeKey, EdgeData>
41{
42 type Item = NodeRef<'a, NodeKey, NodeData, EdgeKey, EdgeData>;
43
44 fn next(&mut self) -> Option<Self::Item> {
45 let inner = self.inner.next()?;
46
47 Some(NodeRef::new(inner))
48 }
49}