grapes/map_graph/
node_ref.rs1use crate::graph;
2use crate::map_graph::{EdgeEntry, EdgesFrom, EdgesTo, NodeEntry};
3use std::hash::Hash;
4
5#[derive(Clone, Copy, Debug)]
9pub struct NodeRef<
10 'a,
11 NodeKey: Hash + Eq + Clone,
12 NodeData: Clone,
13 EdgeKey: Hash + Eq + Clone,
14 EdgeData: Clone,
15> {
16 inner: graph::NodeRef<'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 > NodeRef<'a, NodeKey, NodeData, EdgeKey, EdgeData>
26{
27 pub(crate) fn new(
28 inner: graph::NodeRef<'a, NodeEntry<NodeKey, NodeData>, EdgeEntry<EdgeKey, EdgeData>>,
29 ) -> Self {
30 Self { inner }
31 }
32
33 #[must_use]
37 pub fn data(&self) -> &'a NodeData {
38 &self.inner.data().data
39 }
40
41 #[must_use]
45 pub fn key(&self) -> &'a NodeKey {
46 &self.inner.data().key
47 }
48
49 pub fn iter_edges_from(&self) -> EdgesFrom<NodeKey, NodeData, EdgeKey, EdgeData> {
53 EdgesFrom::new(self.inner.iter_edges_from())
54 }
55
56 pub fn iter_edges_to(&self) -> EdgesTo<NodeKey, NodeData, EdgeKey, EdgeData> {
60 EdgesTo::new(self.inner.iter_edges_to())
61 }
62}