From f1d5ccafd20229c73f6e6c898c0d7795cfb787dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20M=C3=BCller?= Date: Tue, 12 May 2026 18:25:22 +0200 Subject: [PATCH] Add len() for VertexMap and EdgeMap --- src/maps.rs | 14 ++++++++++++++ src/testing/maps_testing.rs | 16 ++++++++-------- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/src/maps.rs b/src/maps.rs index 161fca5..494f842 100644 --- a/src/maps.rs +++ b/src/maps.rs @@ -13,6 +13,11 @@ impl VertexMap { } } + // Reads beyond len() are valid and return the default value. + pub fn len(&self) -> usize { + self.inner.len() + } + pub fn sync>(&mut self, graph: &G) { self.inner.resize(graph.vertex_capacity()); } @@ -43,6 +48,11 @@ impl EdgeMap { } } + // Reads beyond len() are valid and return the default value. + pub fn len(&self) -> usize { + self.inner.len() + } + pub fn sync>(&mut self, graph: &G) { self.inner.resize(graph.edge_capacity()); } @@ -77,6 +87,10 @@ impl EntityMap { } } + pub fn len(&self) -> usize { + self.data.len() + } + pub fn resize(&mut self, capacity: usize) { if capacity > self.data.len() { self.data.resize(capacity, self.default.clone()); diff --git a/src/testing/maps_testing.rs b/src/testing/maps_testing.rs index bc73c6f..5c91259 100644 --- a/src/testing/maps_testing.rs +++ b/src/testing/maps_testing.rs @@ -48,16 +48,16 @@ macro_rules! vertex_map_tests { let mut graph = <$T>::new(); graph.add_vertex(); let mut map = graph.vertex_map(42); - let initial_len = map.inner.data.len(); + let initial_len = map.len(); while graph.vertex_capacity() <= initial_len { graph.add_vertex(); } assert!( - map.inner.data.len() < graph.vertex_capacity(), + map.len() < graph.vertex_capacity(), "precondition: map is stale before sync" ); map.sync(&graph); - assert_eq!(map.inner.data.len(), graph.vertex_capacity()); + assert_eq!(map.len(), graph.vertex_capacity()); } #[test] @@ -99,7 +99,7 @@ macro_rules! vertex_map_deletion_tests { let capacity_before = graph.vertex_capacity(); graph.delete_vertex(v2); map.sync(&graph); - assert_eq!(map.inner.data.len(), capacity_before); + assert_eq!(map.len(), capacity_before); assert_eq!(map[v1], 5); } @@ -180,16 +180,16 @@ macro_rules! edge_map_tests { let v2 = graph.add_vertex(); graph.add_edge(v1, v2); let mut map = graph.edge_map(42); - let initial_len = map.inner.data.len(); + let initial_len = map.len(); while graph.edge_capacity() <= initial_len { graph.add_edge(v1, v2); } assert!( - map.inner.data.len() < graph.edge_capacity(), + map.len() < graph.edge_capacity(), "precondition: map is stale before sync" ); map.sync(&graph); - assert_eq!(map.inner.data.len(), graph.edge_capacity()); + assert_eq!(map.len(), graph.edge_capacity()); } #[test] @@ -237,7 +237,7 @@ macro_rules! edge_map_deletion_tests { let capacity_before = graph.edge_capacity(); graph.delete_edge(e2); map.sync(&graph); - assert_eq!(map.inner.data.len(), capacity_before); + assert_eq!(map.len(), capacity_before); assert_eq!(map[e1], 5); }