use crate::graph;
use crate::map_graph::{EdgeEntry, NodeEntry, NodeRef};
use std::hash::Hash;
#[derive(Clone, Copy, Debug)]
pub struct EdgeRef<
'a,
NodeKey: Hash + Eq + Clone,
NodeData: Clone,
EdgeKey: Hash + Eq + Clone,
EdgeData: Clone,
> {
inner: graph::EdgeRef<'a, NodeEntry<NodeKey, NodeData>, EdgeEntry<EdgeKey, EdgeData>>,
}
impl<
'a,
NodeKey: Hash + Eq + Clone,
NodeData: Clone,
EdgeKey: Hash + Eq + Clone,
EdgeData: Clone,
> EdgeRef<'a, NodeKey, NodeData, EdgeKey, EdgeData>
{
pub(crate) fn new(
inner: graph::EdgeRef<'a, NodeEntry<NodeKey, NodeData>, EdgeEntry<EdgeKey, EdgeData>>,
) -> Self {
Self { inner }
}
#[must_use]
pub fn data(&self) -> &'a EdgeData {
&self.inner.data().data
}
#[must_use]
pub fn key(&self) -> &'a EdgeKey {
&self.inner.data().key
}
#[must_use]
pub fn get_from_node(&self) -> NodeRef<'a, NodeKey, NodeData, EdgeKey, EdgeData> {
NodeRef::new(self.inner.get_from_node())
}
#[must_use]
pub fn get_to_node(&self) -> NodeRef<'a, NodeKey, NodeData, EdgeKey, EdgeData> {
NodeRef::new(self.inner.get_to_node())
}
}