labeledgraph 0.1.2

A flexible graph library for rust
Documentation
use crate::VertexIndex;
use std::collections::hash_set;
use std::iter::Cloned;

#[derive(Clone, Debug)]
pub struct VertexIter<'a> {
  inner: Cloned<hash_set::Iter<'a, VertexIndex>>,
}

impl<'a> VertexIter<'a> {
  #[inline]
  pub(crate) fn new(inner: hash_set::Iter<'a, VertexIndex>) -> Self {
    VertexIter {
      inner: inner.cloned(),
    }
  }
}

impl<'a> Iterator for VertexIter<'a> {
  type Item = VertexIndex;

  #[inline]
  fn next(&mut self) -> Option<Self::Item> {
    self.inner.next()
  }
}

#[derive(Clone, Debug)]
pub struct LabelIter<'a, T: 'a> {
  inner: hash_set::Iter<'a, T>,
}

impl<'a, T> LabelIter<'a, T> {
  #[inline]
  pub(crate) fn new(inner: hash_set::Iter<'a, T>) -> Self {
    LabelIter { inner }
  }
}

impl<'a, T> Iterator for LabelIter<'a, T> {
  type Item = &'a T;

  #[inline]
  fn next(&mut self) -> Option<Self::Item> {
    self.inner.next()
  }
}