pub trait Builderwhere
Self: Sized,{
type Graph;
type Node: Node;
type Edge: Edge;
fn with_capacities(nnodes: usize, nedges: usize) -> Self;
fn reserve(&mut self, nnodes: usize, nedges: usize);
fn add_node(&mut self) -> Self::Node;
fn add_edge(&mut self, u: Self::Node, v: Self::Node) -> Self::Edge;
fn node2id(&self, u: Self::Node) -> usize;
fn edge2id(&self, e: Self::Edge) -> usize;
fn to_graph(self) -> Self::Graph;
fn new() -> Self { ... }
fn add_nodes(&mut self, n: usize) -> Vec<Self::Node> { ... }
}
Expand description
A trait to construct graphs.
In general graphs are static objects. In order to build a graph, one should use a graph builder and, once the construction is complete, convert it into a graph.
This 2-level approach is used because some graph implementations be unstable if the graph is modified (e.g., the node numbers might change). The builder approach allows to separate construction and use of a graph.
Required Associated Types
Required Methods
sourcefn with_capacities(nnodes: usize, nedges: usize) -> Self
fn with_capacities(nnodes: usize, nedges: usize) -> Self
Create a new, empty builder.
The builder might be passed a guess of the number of nodes and edges. This might be used to reserve the appropriate internal memory, but is no strict requirement for the number of nodes and edges to be added to the graph.