auto_diff/collection/
undirected_graph.rs

1use std::collections::{BTreeSet, BTreeMap};
2//use crate::err::AutoDiffError;
3
4
5
6/// Graph
7pub struct UnDirectedGraph<TNode, TEdge> {
8    node: BTreeSet<TNode>,
9    edge: BTreeSet<TEdge>,
10    edge2node: BTreeMap<TEdge, BTreeSet<TNode>>,
11    node2edige: BTreeMap<TNode, BTreeSet<TEdge>>,
12}
13
14impl<TNode:Clone + Copy + Ord,
15     TEdge:Clone + Copy + Ord>
16    Default for UnDirectedGraph<TNode, TEdge> {
17    fn default() -> UnDirectedGraph<TNode, TEdge> {
18	UnDirectedGraph {
19	    node: BTreeSet::new(),
20	    edge: BTreeSet::new(),
21	    edge2node: BTreeMap::new(),
22	    node2edige: BTreeMap::new(),
23        }
24    }
25}
26
27impl<TNode, TEdge> UnDirectedGraph<TNode, TEdge> {
28    pub fn new() -> UnDirectedGraph<TNode, TEdge> {
29        UnDirectedGraph {
30	    node: BTreeSet::new(),
31	    edge: BTreeSet::new(),
32	    edge2node: BTreeMap::new(),
33	    node2edige: BTreeMap::new(),
34        }
35    }
36}
37
38#[cfg(test)]
39mod tests {
40    use super::*;
41    use crate::collection::generational_index::{GenKey};
42
43    #[test]
44    fn new() {
45        let _g = UnDirectedGraph::<GenKey, GenKey>::new();
46    }
47}