pub struct Graph<I: Index, NL: Label, EL: Label> {
pub nodes: Vec<Node<I, NL>>,
pub edges: Vec<Edge<I, EL>>,
}
Expand description
A Graph
is in principle a owning tuple of Nodes and Edges.
Fields§
§nodes: Vec<Node<I, NL>>
§edges: Vec<Edge<I, EL>>
Implementations§
Source§impl<I: Index, NL: Label, EL: Label> Graph<I, NL, EL>
impl<I: Index, NL: Label, EL: Label> Graph<I, NL, EL>
pub fn contains_edge_with_ids(&self, edge: &(I, I)) -> bool
pub fn contains_node_with_id(&self, node: &I) -> bool
pub fn get_node_by_id(&self, idx: &I) -> Option<&Node<I, NL>>
Sourcepub fn neighbours(&self, nodeid: &I) -> Vec<Node<I, NL>>
pub fn neighbours(&self, nodeid: &I) -> Vec<Node<I, NL>>
Returns all nodes connected to the given node id
Sourcepub fn cleanup_edges(&mut self)
pub fn cleanup_edges(&mut self)
Removes edges that either come from or incident on invalid nodes.
§Examples
use graphlang::{Node,Edge,Graph,are_graphs_isomorph};
let mut graph = Graph {
nodes: vec![ Node::new(0u32, "a"), Node::new(1, "a") ],
edges: vec![ Edge::new_unlabeled(0, 1), Edge::new_unlabeled(0, 2), Edge::new_unlabeled(2, 3) ] };
let reference = Graph {
nodes: vec![ Node::new(0u32, "a"), Node::new(1, "a") ],
edges: vec![ Edge::new_unlabeled(0, 1) ] };
graph.cleanup_edges();
assert_eq!(&reference, &graph );
Sourcepub fn insert(&mut self, g: &Self)
pub fn insert(&mut self, g: &Self)
Assumes that the mapping between it and the graph is the identity.
So Node(1) in g adds Node(1) in self. If this is not desired
apply an isomorphism explicitly using translate_copy
.
If then node already exists it replaces the label.
Sourcepub fn remove(&mut self, g: &Self)
pub fn remove(&mut self, g: &Self)
Assumes that the mapping between it and the graph is the identity.
So Node(1) in g removes Node(1) in self. If this is not desired
apply an isomorphism explicitly using translate_copy
If then node does not exists it skips it.
Sourcepub fn translate(&mut self, g: &Isomorphism<I>) -> bool
pub fn translate(&mut self, g: &Isomorphism<I>) -> bool
Modifies a graph inplace by translating all ids using an isomorphism. If it contains nodes that are not covered by the isomorphism they are not modified, which can lead to invalid graphs. This behaviour should be reconsidered.
Sourcepub fn translate_copy(&self, g: &Isomorphism<I>) -> Self
pub fn translate_copy(&self, g: &Isomorphism<I>) -> Self
Returns a graph, that gets translated by an isomorphism. If it contains nodes that are not covered by the isomorphism they are not modified, which can lead to invalid graphs. This behaviour should be reconsidered.
Trait Implementations§
Source§impl<'de, I, NL, EL> Deserialize<'de> for Graph<I, NL, EL>
impl<'de, I, NL, EL> Deserialize<'de> for Graph<I, NL, EL>
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl<'a, I: Index, NL: Label, EL: Label> GraphWalk<'a, Node<I, NL>, Edge<I, EL>> for Graph<I, NL, EL>
impl<'a, I: Index, NL: Label, EL: Label> GraphWalk<'a, Node<I, NL>, Edge<I, EL>> for Graph<I, NL, EL>
Source§impl<'a, I: Index, NL: Label, EL: Label> Labeller<'a, Node<I, NL>, Edge<I, EL>> for Graph<I, NL, EL>
impl<'a, I: Index, NL: Label, EL: Label> Labeller<'a, Node<I, NL>, Edge<I, EL>> for Graph<I, NL, EL>
Source§fn node_id(&'a self, n: &Node<I, NL>) -> Id<'a>
fn node_id(&'a self, n: &Node<I, NL>) -> Id<'a>
n
to a unique identifier with respect to self
. The
implementer is responsible for ensuring that the returned name
is a valid DOT identifier.Source§fn node_label(&'a self, n: &N) -> LabelText<'a>
fn node_label(&'a self, n: &N) -> LabelText<'a>
n
to a label that will be used in the rendered output.
The label need not be unique, and may be the empty string; the
default is just the output from node_id
.Source§fn edge_label(&'a self, e: &E) -> LabelText<'a>
fn edge_label(&'a self, e: &E) -> LabelText<'a>
e
to a label that will be used in the rendered output.
The label need not be unique, and may be the empty string; the
default is in fact the empty string.Source§fn node_style(&'a self, _n: &N) -> Style
fn node_style(&'a self, _n: &N) -> Style
n
to a style that will be used in the rendered output.Source§fn edge_end_arrow(&'a self, _e: &E) -> Arrow
fn edge_end_arrow(&'a self, _e: &E) -> Arrow
e
to arrow style that will be used on the end of an edge.
Defaults to default arrow style.Source§fn edge_start_arrow(&'a self, _e: &E) -> Arrow
fn edge_start_arrow(&'a self, _e: &E) -> Arrow
e
to arrow style that will be used on the end of an edge.
Defaults to default arrow style.Source§fn edge_style(&'a self, _e: &E) -> Style
fn edge_style(&'a self, _e: &E) -> Style
e
to a style that will be used in the rendered output.