ade_traits/
graph.rs

1use crate::{EdgeTrait, NodeTrait};
2
3pub trait GraphViewTrait<N: NodeTrait, E: EdgeTrait> {
4    fn is_empty(&self) -> bool;
5    fn get_node(&self, key: u32) -> &N;
6    fn get_edge(&self, source: u32, target: u32) -> &E;
7    fn has_node(&self, key: u32) -> bool;
8    fn has_edge(&self, source: u32, target: u32) -> bool;
9    fn get_nodes<'a>(&'a self) -> impl Iterator<Item = &'a N>
10    where
11        N: 'a;
12    fn get_edges<'a>(&'a self) -> impl Iterator<Item = &'a E>
13    where
14        E: 'a;
15    fn get_predecessors<'a>(&'a self, node_key: u32) -> impl Iterator<Item = &'a N>
16    where
17        N: 'a;
18    fn get_successors<'a>(&'a self, node_key: u32) -> impl Iterator<Item = &'a N>
19    where
20        N: 'a;
21    fn get_node_keys(&self) -> impl Iterator<Item = u32> + '_;
22    fn get_predecessors_keys(&self, node_key: u32) -> impl Iterator<Item = u32> + '_;
23    fn get_successors_keys(&self, node_key: u32) -> impl Iterator<Item = u32> + '_;
24    fn filter(&self, node_keys: &[u32]) -> impl GraphViewTrait<N, E>;
25    fn has_sequential_keys(&self) -> bool;
26}