Renamed FromGraph to GraphTopologyConversion to align with existing traits and separate from From trait
This commit is contained in:
+15
-12
@@ -4,7 +4,9 @@ use std::num::NonZeroUsize;
|
||||
|
||||
use crate::maps::ElementMap;
|
||||
use crate::models;
|
||||
use crate::traits::{FromGraph, GraphTopology, GraphTopologyAddition, Incidence, IncidenceCursor};
|
||||
use crate::traits::{
|
||||
GraphTopology, GraphTopologyAddition, GraphTopologyConversion, Incidence, IncidenceCursor,
|
||||
};
|
||||
|
||||
/// An opaque handle identifying a vertex in an [`AppendGraph`].
|
||||
///
|
||||
@@ -260,14 +262,8 @@ impl GraphTopologyAddition for AppendGraph {
|
||||
}
|
||||
}
|
||||
|
||||
impl<H: GraphTopology> From<&H> for AppendGraph {
|
||||
fn from(source: &H) -> Self {
|
||||
models::build_from_topology::<Self, _>(source, Vertex(usize::MAX), |_, _| {}).0
|
||||
}
|
||||
}
|
||||
|
||||
impl FromGraph for AppendGraph {
|
||||
fn from_graph<H: GraphTopology>(
|
||||
impl GraphTopologyConversion for AppendGraph {
|
||||
fn convert<H: GraphTopology>(
|
||||
source: &H,
|
||||
) -> (
|
||||
Self,
|
||||
@@ -276,11 +272,17 @@ impl FromGraph for AppendGraph {
|
||||
) {
|
||||
let mut edge_map = source.edge_map(Edge(NonZeroUsize::MAX));
|
||||
let (result, vertex_map) =
|
||||
models::build_from_topology(source, Vertex(usize::MAX), |e, new_e| edge_map[e] = new_e);
|
||||
models::convert_to_addition(source, Vertex(usize::MAX), |e, new_e| edge_map[e] = new_e);
|
||||
(result, vertex_map, edge_map)
|
||||
}
|
||||
}
|
||||
|
||||
impl<H: GraphTopology> From<&H> for AppendGraph {
|
||||
fn from(source: &H) -> Self {
|
||||
models::convert_to_addition::<Self, _>(source, Vertex(usize::MAX), |_, _| {}).0
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod trait_tests {
|
||||
use super::AppendGraph;
|
||||
@@ -290,8 +292,9 @@ mod trait_tests {
|
||||
crate::graph_topology_addition_tests!(AppendGraph);
|
||||
crate::graph_topology_clone_tests!(AppendGraph);
|
||||
crate::graph_topology_addition_clone_tests!(AppendGraph);
|
||||
crate::graph_topology_from_graph_tests!(AppendGraph, Graph);
|
||||
crate::graph_topology_addition_from_graph_tests!(AppendGraph, Graph);
|
||||
crate::graph_topology_conversion_tests!(AppendGraph, Graph);
|
||||
crate::graph_topology_addition_conversion_tests!(AppendGraph, Graph);
|
||||
crate::from_tests!(AppendGraph, Graph);
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
|
||||
+12
-11
@@ -3,7 +3,7 @@
|
||||
use std::ops::IndexMut;
|
||||
|
||||
use crate::maps::ElementMap;
|
||||
use crate::traits::{FromGraph, GraphTopology, Incidence, IncidenceCursor};
|
||||
use crate::traits::{GraphTopology, GraphTopologyConversion, Incidence, IncidenceCursor};
|
||||
|
||||
/// An opaque handle identifying a vertex in a [`FrozenGraph`].
|
||||
///
|
||||
@@ -77,7 +77,7 @@ impl IncidenceCursor<FrozenGraph> for FrozenGraphIncidenceCursor {
|
||||
/// let u = graph.add_vertex();
|
||||
/// let v = graph.add_vertex();
|
||||
/// let e = graph.add_edge(u, v);
|
||||
/// let (graph, vertex_map, edge_map) = FrozenGraph::from_graph(&graph);
|
||||
/// let (graph, vertex_map, edge_map) = FrozenGraph::convert(&graph);
|
||||
///
|
||||
/// // Queries the FrozenGraph instance via the returned map.
|
||||
/// assert!(graph.are_adjacent(vertex_map[u], vertex_map[v]));
|
||||
@@ -191,14 +191,8 @@ impl GraphTopology for FrozenGraph {
|
||||
}
|
||||
}
|
||||
|
||||
impl<G: GraphTopology> From<&G> for FrozenGraph {
|
||||
fn from(graph: &G) -> Self {
|
||||
Self::from_graph(graph).0
|
||||
}
|
||||
}
|
||||
|
||||
impl FromGraph for FrozenGraph {
|
||||
fn from_graph<G: GraphTopology>(
|
||||
impl GraphTopologyConversion for FrozenGraph {
|
||||
fn convert<G: GraphTopology>(
|
||||
source: &G,
|
||||
) -> (
|
||||
Self,
|
||||
@@ -253,6 +247,12 @@ impl FromGraph for FrozenGraph {
|
||||
}
|
||||
}
|
||||
|
||||
impl<G: GraphTopology> From<&G> for FrozenGraph {
|
||||
fn from(graph: &G) -> Self {
|
||||
Self::convert(graph).0
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod trait_tests {
|
||||
use super::FrozenGraph;
|
||||
@@ -260,7 +260,8 @@ mod trait_tests {
|
||||
|
||||
crate::graph_topology_tests!(FrozenGraph);
|
||||
crate::graph_topology_clone_tests!(FrozenGraph);
|
||||
crate::graph_topology_from_graph_tests!(FrozenGraph, AppendGraph);
|
||||
crate::graph_topology_conversion_tests!(FrozenGraph, AppendGraph);
|
||||
crate::from_tests!(FrozenGraph, AppendGraph);
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
|
||||
+19
-18
@@ -6,8 +6,8 @@ use typed_generational_arena::{Arena, Index};
|
||||
use crate::maps::ElementMap;
|
||||
use crate::models;
|
||||
use crate::traits::{
|
||||
FromGraph, GraphTopology, GraphTopologyAddition, GraphTopologyDeletion, Incidence,
|
||||
IncidenceCursor,
|
||||
GraphTopology, GraphTopologyAddition, GraphTopologyConversion, GraphTopologyDeletion,
|
||||
Incidence, IncidenceCursor,
|
||||
};
|
||||
|
||||
/// An opaque handle identifying a vertex in a [`Graph`].
|
||||
@@ -400,19 +400,8 @@ impl GraphTopologyDeletion for Graph {
|
||||
}
|
||||
}
|
||||
|
||||
impl<H: GraphTopology> From<&H> for Graph {
|
||||
fn from(source: &H) -> Self {
|
||||
models::build_from_topology::<Self, _>(
|
||||
source,
|
||||
Vertex::new(usize::MAX, usize::MAX),
|
||||
|_, _| {},
|
||||
)
|
||||
.0
|
||||
}
|
||||
}
|
||||
|
||||
impl FromGraph for Graph {
|
||||
fn from_graph<H: GraphTopology>(
|
||||
impl GraphTopologyConversion for Graph {
|
||||
fn convert<H: GraphTopology>(
|
||||
source: &H,
|
||||
) -> (
|
||||
Self,
|
||||
@@ -421,13 +410,24 @@ impl FromGraph for Graph {
|
||||
) {
|
||||
let mut edge_map = source.edge_map(Edge::new(usize::MAX, usize::MAX));
|
||||
let (result, vertex_map) =
|
||||
models::build_from_topology(source, Vertex::new(usize::MAX, usize::MAX), |e, new_e| {
|
||||
models::convert_to_addition(source, Vertex::new(usize::MAX, usize::MAX), |e, new_e| {
|
||||
edge_map[e] = new_e
|
||||
});
|
||||
(result, vertex_map, edge_map)
|
||||
}
|
||||
}
|
||||
|
||||
impl<H: GraphTopology> From<&H> for Graph {
|
||||
fn from(source: &H) -> Self {
|
||||
models::convert_to_addition::<Self, _>(
|
||||
source,
|
||||
Vertex::new(usize::MAX, usize::MAX),
|
||||
|_, _| {},
|
||||
)
|
||||
.0
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod trait_tests {
|
||||
use super::Graph;
|
||||
@@ -439,8 +439,9 @@ mod trait_tests {
|
||||
crate::graph_topology_addition_deletion_tests!(Graph);
|
||||
crate::graph_topology_clone_tests!(Graph);
|
||||
crate::graph_topology_addition_clone_tests!(Graph);
|
||||
crate::graph_topology_from_graph_tests!(Graph, AppendGraph);
|
||||
crate::graph_topology_addition_from_graph_tests!(Graph, AppendGraph);
|
||||
crate::graph_topology_conversion_tests!(Graph, AppendGraph);
|
||||
crate::graph_topology_addition_conversion_tests!(Graph, AppendGraph);
|
||||
crate::from_tests!(Graph, AppendGraph);
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
|
||||
Reference in New Issue
Block a user