pub mod get_iter;
pub mod indexed;
pub mod mut_iter;
pub mod node_range_visitor;
pub mod node_slice_visitor;
use crate::GraphEngine;
use std::{
any::type_name,
fmt::{Debug, Formatter},
ops::{Bound, Range, RangeBounds},
};
pub type NodeID = usize;
#[derive(Copy, Clone, Debug)]
pub enum NodeNeighborFilter {
InComing,
OutGoing,
Both,
}
#[derive(Copy, Clone, Debug)]
pub enum NodeDegree {
Directed {
in_coming: usize,
out_going: usize,
},
Undirected {
total: usize,
},
}
impl NodeDegree {
pub fn total(&self) -> usize {
match self {
NodeDegree::Directed { in_coming, out_going } => in_coming + out_going,
NodeDegree::Undirected { total } => *total,
}
}
}
pub trait Node {
type Name: AsRef<str>;
fn index(&self) -> NodeID;
fn name(&self) -> Self::Name;
}