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
sourceimpl<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
sourceimpl<'de, I: Index, NL: Label, EL: Label> Deserialize<'de> for Graph<I, NL, EL> where
I: Deserialize<'de>,
NL: Deserialize<'de>,
EL: Deserialize<'de>,
impl<'de, I: Index, NL: Label, EL: Label> Deserialize<'de> for Graph<I, NL, EL> where
I: Deserialize<'de>,
NL: Deserialize<'de>,
EL: Deserialize<'de>,
sourcefn 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>,
Deserialize this value from the given Serde deserializer. Read more
sourceimpl<'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>
sourceimpl<'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>
sourcefn node_id(&'a self, n: &Node<I, NL>) -> Id<'a>
fn node_id(&'a self, n: &Node<I, NL>) -> Id<'a>
Maps n
to a unique identifier with respect to self
. The
implementer is responsible for ensuring that the returned name
is a valid DOT identifier. Read more
sourcefn node_shape(&'a self, _node: &N) -> Option<LabelText<'a>>
fn node_shape(&'a self, _node: &N) -> Option<LabelText<'a>>
Maps n
to one of the graphviz shape
names. If None
is returned, no shape
attribute is specified. Read more
sourcefn node_label(&'a self, n: &N) -> LabelText<'a>
fn node_label(&'a self, n: &N) -> LabelText<'a>
Maps 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
. Read more
sourcefn edge_label(&'a self, e: &E) -> LabelText<'a>
fn edge_label(&'a self, e: &E) -> LabelText<'a>
Maps 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. Read more
sourcefn node_style(&'a self, _n: &N) -> Style
fn node_style(&'a self, _n: &N) -> Style
Maps n
to a style that will be used in the rendered output.
sourcefn node_color(&'a self, _node: &N) -> Option<LabelText<'a>>
fn node_color(&'a self, _node: &N) -> Option<LabelText<'a>>
Maps n
to one of the graphviz color
names. If None
is returned, no color
attribute is specified. Read more
sourcefn edge_end_arrow(&'a self, _e: &E) -> Arrow
fn edge_end_arrow(&'a self, _e: &E) -> Arrow
Maps e
to arrow style that will be used on the end of an edge.
Defaults to default arrow style. Read more
sourcefn edge_start_arrow(&'a self, _e: &E) -> Arrow
fn edge_start_arrow(&'a self, _e: &E) -> Arrow
Maps e
to arrow style that will be used on the end of an edge.
Defaults to default arrow style. Read more
sourcefn edge_style(&'a self, _e: &E) -> Style
fn edge_style(&'a self, _e: &E) -> Style
Maps e
to a style that will be used in the rendered output.
sourcefn edge_color(&'a self, _e: &E) -> Option<LabelText<'a>>
fn edge_color(&'a self, _e: &E) -> Option<LabelText<'a>>
Maps e
to one of the graphviz color
names. If None
is returned, no color
attribute is specified. Read more
sourceimpl<I: Index, NL: Label, EL: Label> Serialize for Graph<I, NL, EL> where
I: Serialize,
NL: Serialize,
EL: Serialize,
impl<I: Index, NL: Label, EL: Label> Serialize for Graph<I, NL, EL> where
I: Serialize,
NL: Serialize,
EL: Serialize,
Auto Trait Implementations
impl<I, NL, EL> RefUnwindSafe for Graph<I, NL, EL> where
EL: RefUnwindSafe,
I: RefUnwindSafe,
NL: RefUnwindSafe,
impl<I, NL, EL> Send for Graph<I, NL, EL> where
EL: Send,
I: Send,
NL: Send,
impl<I, NL, EL> Sync for Graph<I, NL, EL> where
EL: Sync,
I: Sync,
NL: Sync,
impl<I, NL, EL> Unpin for Graph<I, NL, EL> where
EL: Unpin,
I: Unpin,
NL: Unpin,
impl<I, NL, EL> UnwindSafe for Graph<I, NL, EL> where
EL: UnwindSafe,
I: UnwindSafe,
NL: UnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcefn clone_into(&self, target: &mut T)
fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more