From 9088dd46832119d1de9eb27509e576c9ffbb80ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20M=C3=BCller?= Date: Wed, 22 Apr 2026 14:28:21 +0200 Subject: [PATCH] Add edge return type to GraphTopology::add_edge() There is currently no use for the return type, but it will come. --- src/models.rs | 7 +++++-- src/traits.rs | 3 ++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/models.rs b/src/models.rs index 9aeb4e5..23a0809 100644 --- a/src/models.rs +++ b/src/models.rs @@ -10,7 +10,7 @@ impl From for usize { } #[derive(Copy, Clone, PartialEq, Eq)] -struct Incidence(usize); +pub struct Incidence(usize); struct VertexIncidenceHeader { incidence_count: usize, @@ -69,6 +69,8 @@ impl Graph { impl GraphTopology for Graph { type Vertex = Vertex; + type Edge = Incidence; + fn vertex_count(&self) -> usize { self.vertices.len() } @@ -104,9 +106,10 @@ impl GraphTopology for Graph { Vertex(self.vertices.len() - 1) } - fn add_edge(&mut self, v1: Self::Vertex, v2: Self::Vertex) { + 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) } } diff --git a/src/traits.rs b/src/traits.rs index 8a06dec..d4de040 100644 --- a/src/traits.rs +++ b/src/traits.rs @@ -1,5 +1,6 @@ pub trait GraphTopology { type Vertex: Copy + Eq; + type Edge; fn vertex_count(&self) -> usize; fn edge_count(&self) -> usize; @@ -8,5 +9,5 @@ pub trait GraphTopology { fn vertices(&self) -> impl Iterator; fn neighbors(&self, v: Self::Vertex) -> impl Iterator; fn add_vertex(&mut self) -> Self::Vertex; - fn add_edge(&mut self, v1: Self::Vertex, v2: Self::Vertex); + fn add_edge(&mut self, v1: Self::Vertex, v2: Self::Vertex) -> Self::Edge; }