use std::ops::{Deref, DerefMut};
use petgraph::csr::IndexType;
use crate::{nodes::FixedEdgeCount, EdgeBounds, SimpleEdgeBounds};
impl<const MAX_IN: usize, const MAX_OUT: usize, T: Default> Default
for FixedEdgeCount<MAX_IN, MAX_OUT, T>
{
fn default() -> Self {
Self { data: T::default() }
}
}
impl<const MAX_IN: usize, const MAX_OUT: usize, T, Ix: IndexType> EdgeBounds<Ix>
for FixedEdgeCount<MAX_IN, MAX_OUT, T>
{
fn max_incoming_edges(&self) -> Ix {
Ix::new(MAX_IN)
}
fn max_outgoing_edges(&self) -> Ix {
Ix::new(MAX_OUT)
}
}
impl<const MAX_IN: usize, const MAX_OUT: usize, T> SimpleEdgeBounds
for FixedEdgeCount<MAX_IN, MAX_OUT, T>
{
}
impl<const MAX_IN: usize, const MAX_OUT: usize, T> crate::ImmutableEdgeBounds
for FixedEdgeCount<MAX_IN, MAX_OUT, T>
{
}
impl<const MAX_IN: usize, const MAX_OUT: usize, T> Deref for FixedEdgeCount<MAX_IN, MAX_OUT, T> {
type Target = T;
fn deref(&self) -> &Self::Target {
&self.data
}
}
impl<const MAX_IN: usize, const MAX_OUT: usize, T> DerefMut for FixedEdgeCount<MAX_IN, MAX_OUT, T> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.data
}
}