diff --git a/src/models/append_graph.rs b/src/models/append_graph.rs index 83f0127..816e6af 100644 --- a/src/models/append_graph.rs +++ b/src/models/append_graph.rs @@ -80,10 +80,6 @@ impl GraphTopology for AppendGraph { self.vertices.len() } - fn edge_count(&self) -> usize { - self.incidences.len() / 2 - } - fn vertex_capacity(&self) -> usize { self.vertices.len() } @@ -92,6 +88,10 @@ impl GraphTopology for AppendGraph { VertexMap::new(default, |v| v.0, self.vertex_capacity()) } + fn edge_count(&self) -> usize { + self.incidences.len() / 2 + } + fn degree(&self, v: Self::Vertex) -> usize { self.vertices[v.0].incidence_count } diff --git a/src/models/graph.rs b/src/models/graph.rs index d69372a..8970e24 100644 --- a/src/models/graph.rs +++ b/src/models/graph.rs @@ -159,10 +159,6 @@ impl GraphTopology for Graph { self.vertices.len() } - fn edge_count(&self) -> usize { - self.incidences.len() / 2 - } - fn vertex_capacity(&self) -> usize { self.vertices.capacity() } @@ -171,6 +167,10 @@ impl GraphTopology for Graph { VertexMap::new(default, |v| v.arr_idx(), self.vertex_capacity()) } + fn edge_count(&self) -> usize { + self.incidences.len() / 2 + } + fn degree(&self, v: Self::Vertex) -> usize { self.vertices[v].incidence_count } diff --git a/src/traits.rs b/src/traits.rs index 515c006..16c7129 100644 --- a/src/traits.rs +++ b/src/traits.rs @@ -9,9 +9,9 @@ pub trait GraphTopology { type Edge: Copy + Eq; fn vertex_count(&self) -> usize; - fn edge_count(&self) -> usize; fn vertex_capacity(&self) -> usize; fn vertex_map(&self, default: T) -> VertexMap; + fn edge_count(&self) -> usize; fn degree(&self, v: Self::Vertex) -> usize; fn are_adjacent(&self, v1: Self::Vertex, v2: Self::Vertex) -> bool; fn vertices(&self) -> impl Iterator;