Add EdgeMap and private generic EntityMap, update tests

This commit is contained in:
2026-05-07 16:03:17 +02:00
parent e074fdf944
commit 6fe3acb306
7 changed files with 375 additions and 140 deletions
+9 -1
View File
@@ -1,4 +1,4 @@
use crate::maps::VertexMap;
use crate::maps::{EdgeMap, VertexMap};
use crate::traits::GraphTopology;
#[derive(Copy, Clone, PartialEq, Eq, Debug)]
@@ -92,6 +92,14 @@ impl GraphTopology for AppendGraph {
self.incidences.len() / 2
}
fn edge_capacity(&self) -> usize {
self.incidences.len() / 2
}
fn edge_map<T: Clone>(&self, default: T) -> EdgeMap<Self::Edge, T> {
EdgeMap::new(default, |e| e.0 / 2, self.edge_capacity())
}
fn degree(&self, v: Self::Vertex) -> usize {
self.vertices[v.0].incidence_count
}
+9 -1
View File
@@ -1,6 +1,6 @@
use typed_generational_arena::{Arena, Index};
use crate::maps::VertexMap;
use crate::maps::{EdgeMap, VertexMap};
use crate::traits::{GraphTopology, GraphTopologyDeletion};
type Vertex = Index<VertexIncidenceHeader, usize, usize>;
@@ -171,6 +171,14 @@ impl GraphTopology for Graph {
self.incidences.len() / 2
}
fn edge_capacity(&self) -> usize {
self.incidences.capacity() / 2
}
fn edge_map<T: Clone>(&self, default: T) -> EdgeMap<Self::Edge, T> {
EdgeMap::new(default, |e| e.arr_idx() / 2, self.edge_capacity())
}
fn degree(&self, v: Self::Vertex) -> usize {
self.vertices[v].incidence_count
}