Trait Graph

Source
pub trait Graph<'a> {
    type Node: Eq + Hash + Clone + Sized + Display + SingleId;
    type Edge: Eq + Hash + Clone + IdPair;

    // Required methods
    fn nodes(&'a self) -> impl Iterator<Item = &'a Self::Node>;
    fn edges(&'a self) -> impl Iterator<Item = &'a Self::Edge>;
    fn add_node(&mut self, node: Self::Node);
    fn add_edge(&mut self, edge: Self::Edge);

    // Provided methods
    fn get_edges_pair(
        &'a self,
    ) -> impl Iterator<Item = (&'a Self::Node, &'a Self::Node)> { ... }
    fn get_edges_pair_with_edge(
        &'a self,
    ) -> impl Iterator<Item = (&'a Self::Node, &'a Self::Edge, &'a Self::Node)> { ... }
}

Required Associated Types§

Required Methods§

Source

fn nodes(&'a self) -> impl Iterator<Item = &'a Self::Node>

Source

fn edges(&'a self) -> impl Iterator<Item = &'a Self::Edge>

Source

fn add_node(&mut self, node: Self::Node)

Source

fn add_edge(&mut self, edge: Self::Edge)

Provided Methods§

Source

fn get_edges_pair( &'a self, ) -> impl Iterator<Item = (&'a Self::Node, &'a Self::Node)>

Source

fn get_edges_pair_with_edge( &'a self, ) -> impl Iterator<Item = (&'a Self::Node, &'a Self::Edge, &'a Self::Node)>

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§