Trait rs_graph::attributed::AttributedGraph [] [src]

pub trait AttributedGraph<'a> {
    type Graph: Graph<'a>;
    type Attributes: Attributes<Node = <Self::Graph as Graph<'a>>::Node, Edge = <Self::Graph as Graph<'a>>::Edge>;
    fn split(&'a mut self) -> (&Self::Graph, Self::Attributes);
fn attr(&'a self) -> &'a <Self::Attributes as Attributes>::GraphAttr;
fn attr_mut(
        &'a mut self
    ) -> &'a mut <Self::Attributes as Attributes>::GraphAttr;
fn node(
        &'a self,
        u: <Self::Graph as Graph<'a>>::Node
    ) -> &'a <Self::Attributes as Attributes>::NodeAttr;
fn node_mut(
        &'a mut self,
        u: <Self::Graph as Graph<'a>>::Node
    ) -> &'a mut <Self::Attributes as Attributes>::NodeAttr;
fn edge(
        &'a self,
        e: <Self::Graph as Graph<'a>>::Edge
    ) -> &'a <Self::Attributes as Attributes>::EdgeAttr;
fn edge_mut(
        &'a mut self,
        e: <Self::Graph as Graph<'a>>::Edge
    ) -> &'a mut <Self::Attributes as Attributes>::EdgeAttr; }

An attributed graph.

This trait adds three attributes to a graph:

  1. attributes for the graph itself via attr and attr_mut.
  2. attributes for the nodes via node and node_mut.
  3. attributes for the edges via node and node_mut.

Furthermore, if you need to mutate some of the attributes, the split method, splits the graph into two references: one for pure read-only graph access and one for mutable access to the attributes. This allows to mutate the attributes while ensuring that the graph structure remains unchanged (and thus no nodes or edges may be added.)

Associated Types

Required Methods

Return a read-only graph reference and a mutable attributes reference.

Return the graph attributes.

Return the graph attributes.

Return the attributes of a node.

Return the attributes of a node.

Return the attributes of an edge.

Return the attributes of an edge.

Implementors