diff --git a/src/graph.rs b/src/graph.rs index 4ac47e3..ee00ac2 100644 --- a/src/graph.rs +++ b/src/graph.rs @@ -2,12 +2,7 @@ use crate::edge::Edge; use crate::node::Node; /// operations you might want to do on a graph or on nodes in a graph -pub trait Graph<'g, N: Node + 'g, E: Edge + 'g> { - /// return the nodes of a graph - fn nodes(&'g self) -> impl Iterator; - - /// return the edges of a graph - fn edges(&'g self) -> impl Iterator; +pub trait Graph { // Connect two nodes, and return the edge // TODO: figure out a way to modify self? is that even needed? // same for `disconnect()` diff --git a/src/test.rs b/src/test.rs index f53a2d7..defe87d 100644 --- a/src/test.rs +++ b/src/test.rs @@ -2,7 +2,6 @@ use std::collections::{HashMap, HashSet}; use crate::{edge::Edge, graph::Graph, node::Node}; -#[derive(Clone)] struct SimpleEdge { id: usize, n1: usize, @@ -13,7 +12,6 @@ impl Edge for SimpleEdge { type HANDLE = usize; } -#[derive(Clone)] struct SimpleNode { id: usize, edges: HashSet<::HANDLE>, @@ -50,15 +48,7 @@ impl SimpleGraph { } } -impl<'g> Graph<'g, SimpleNode, SimpleEdge> for SimpleGraph { - fn nodes(&'g self) -> impl Iterator { - self.nodes.values().into_iter() - } - - fn edges(&'g self) -> impl Iterator { - self.edges.values().into_iter() - } - +impl<'a> Graph for SimpleGraph { fn connect(&mut self, node_1: usize, node_2: usize) -> usize { let id = self.edges.len();