diff --git a/src/models/append_graph.rs b/src/models/append_graph.rs index 65657f8..2f27194 100644 --- a/src/models/append_graph.rs +++ b/src/models/append_graph.rs @@ -5,9 +5,9 @@ use crate::traits::{GraphTopology, IncidenceCursor}; pub struct Vertex(usize); #[derive(Copy, Clone, PartialEq, Eq, Debug)] -pub struct Incidence(usize); +pub struct Edge(usize); -impl Incidence { +impl Edge { fn normalize(&self) -> Self { Self(self.0 & !1) } @@ -15,22 +15,22 @@ impl Incidence { struct VertexIncidenceHeader { incidence_count: usize, - first_incidence: Option, + first_incidence: Option, } #[derive(Copy, Clone)] struct IncidenceEntry { - next: Option, + next: Option, adjacent: Vertex, } #[derive(Copy, Clone)] pub struct AppendGraphIncidenceCursor { - incidence: Option, + incidence: Option, } impl IncidenceCursor for AppendGraphIncidenceCursor { - fn next(&mut self, graph: &AppendGraph) -> Option<(Vertex, Incidence)> { + fn next(&mut self, graph: &AppendGraph) -> Option<(Vertex, Edge)> { graph.step_incidence(&mut self.incidence) } } @@ -56,15 +56,15 @@ impl AppendGraph { adjacent: v2, }); self.vertices[v1.0].incidence_count += 1; - self.vertices[v1.0].first_incidence = Some(Incidence(self.incidences.len() - 1)); + self.vertices[v1.0].first_incidence = Some(Edge(self.incidences.len() - 1)); } - fn raw_incidences(&self, v: Vertex) -> impl Iterator { + fn raw_incidences(&self, v: Vertex) -> impl Iterator { let mut incidence = self.vertices[v.0].first_incidence; std::iter::from_fn(move || self.step_incidence(&mut incidence)) } - fn step_incidence(&self, incidence: &mut Option) -> Option<(Vertex, Incidence)> { + fn step_incidence(&self, incidence: &mut Option) -> Option<(Vertex, Edge)> { let current = (*incidence)?; let entry = self.incidences[current.0]; *incidence = entry.next; @@ -80,7 +80,7 @@ impl Default for AppendGraph { impl GraphTopology for AppendGraph { type Vertex = Vertex; - type Edge = Incidence; + type Edge = Edge; type IncidenceCursor = AppendGraphIncidenceCursor; fn vertex_count(&self) -> usize { @@ -130,7 +130,7 @@ impl GraphTopology for AppendGraph { } fn edges(&self) -> impl Iterator { - (0..self.incidences.len()).step_by(2).map(Incidence) + (0..self.incidences.len()).step_by(2).map(Edge) } fn incident_edges(&self, v: Self::Vertex) -> impl Iterator { @@ -158,7 +158,7 @@ impl GraphTopology for AppendGraph { fn add_edge(&mut self, v1: Self::Vertex, v2: Self::Vertex) -> Self::Edge { self.add_incidence(v1, v2); self.add_incidence(v2, v1); - Incidence(self.incidences.len() - 2) + Edge(self.incidences.len() - 2) } } @@ -175,7 +175,7 @@ mod tests { let v1 = graph.add_vertex(); let v2 = graph.add_vertex(); let e = graph.add_edge(v1, v2); - let f = Incidence(e.0 + 1); + let f = Edge(e.0 + 1); let (u1, u2) = graph.incident_vertices(f); assert!( (u1 == v1 && u2 == v2) || (u1 == v2 && u2 == v1),