digraph-rs 0.1.0

a handful of algorithms for digraphs
Documentation
use std::collections::hash_map::Entry;
use std::collections::{HashMap, HashSet};
use std::hash::Hash;

pub trait Visited<'a, T> {
    fn visit(&mut self, v: &'a T) -> bool;
    fn already_visited(&self, v: &'a T) -> bool;
}

#[derive(Debug)]
pub struct VisitedSet<'a, T>
where
    T: Hash + Eq,
{
    visited: HashSet<&'a T>,
}

impl<'a, T> Default for VisitedSet<'a, T>
where
    T: Hash + Eq,
{
    fn default() -> Self {
        Self { visited: Default::default() }
    }
}


impl<'a, T> Visited<'a, T> for VisitedSet<'a, T>
where
    T: Hash + Eq,
{
    fn visit(&mut self, v: &'a T) -> bool {
        self.visited.insert(v)
    }
    fn already_visited(&self, v: &'a T) -> bool {
        self.visited.contains(v)
    }
}