Remove pub from structs and fields that should have been private

Graph fields can now be private because of the new iterators Graph::vertices()
and Graph::neighbors(). Without them there was no way to access vertices and
incidences without the public Graph fields.
This commit is contained in:
2025-10-25 01:23:05 +02:00
parent 5ad480b379
commit 3565b6b548
+6 -10
View File
@@ -2,15 +2,12 @@
#[derive(Copy, Clone, PartialEq, Eq, Debug)] #[derive(Copy, Clone, PartialEq, Eq, Debug)]
pub struct Vertex(pub usize); pub struct Vertex(pub usize);
// TODO: Incidence value must not be public.
// TODO: Incidence must not be public.
#[derive(Copy, Clone, PartialEq, Eq)] #[derive(Copy, Clone, PartialEq, Eq)]
pub struct Incidence(pub usize); struct Incidence(usize);
// TODO: VertexIncidenceHeader and its fields must not be public, but without iterators there is currently no other way to access vertex incidences. struct VertexIncidenceHeader {
pub struct VertexIncidenceHeader {
incidence_count: usize, incidence_count: usize,
pub first_incidence: Option<Incidence>, first_incidence: Option<Incidence>,
} }
pub struct VertexNeighborIterator<'a> { pub struct VertexNeighborIterator<'a> {
@@ -28,7 +25,6 @@ impl<'a> Iterator for VertexNeighborIterator<'a> {
} }
} }
// TODO: Graph fields must not be public.
// TODO: Add functions to reserve memory for vertices and edges. // TODO: Add functions to reserve memory for vertices and edges.
// TODO: Graph cannot support deleting vertices because of the external indices "Vertex". They could be made stable with e.g. slotmap or generational arena. // TODO: Graph cannot support deleting vertices because of the external indices "Vertex". They could be made stable with e.g. slotmap or generational arena.
// TODO: Add function to delete vertices. // TODO: Add function to delete vertices.
@@ -36,9 +32,9 @@ impl<'a> Iterator for VertexNeighborIterator<'a> {
// TODO: Add iterator of edges. // TODO: Add iterator of edges.
pub struct Graph { pub struct Graph {
// TODO: Index 'incidence_headers' by a 'Vertex' instead of 'Vertex.0'? // TODO: Index 'incidence_headers' by a 'Vertex' instead of 'Vertex.0'?
pub incidence_headers: Vec<VertexIncidenceHeader>, incidence_headers: Vec<VertexIncidenceHeader>,
pub next_incidences: Vec<Option<Incidence>>, next_incidences: Vec<Option<Incidence>>,
pub incidence_vertices: Vec<Vertex>, incidence_vertices: Vec<Vertex>,
} }
impl Graph { impl Graph {