1#[derive(Clone, Debug, Default, PartialEq, Eq)]
6pub struct EdgeCounts {
7 incoming: Vec<usize>,
9 outgoing: Vec<usize>,
11}
12
13impl EdgeCounts {
14 pub fn new(incoming: Vec<usize>, outgoing: Vec<usize>) -> Self {
16 Self { incoming, outgoing }
17 }
18
19 pub fn incoming(&self) -> &[usize] {
21 self.incoming.as_ref()
22 }
23
24 pub fn outgoing(&self) -> &[usize] {
26 self.outgoing.as_ref()
27 }
28}
29
30#[cfg(test)]
31mod tests {
32 use super::EdgeCounts;
33
34 #[test]
35 fn clone() {
36 let edge_counts = EdgeCounts {
37 incoming: vec![1, 2],
38 outgoing: vec![2, 1],
39 };
40
41 assert_eq!(edge_counts, edge_counts.clone());
42 }
43
44 #[test]
45 fn debug() {
46 let edge_counts = EdgeCounts {
47 incoming: vec![1, 2],
48 outgoing: vec![2, 1],
49 };
50
51 assert_eq!(
52 "EdgeCounts { incoming: [1, 2], outgoing: [2, 1] }",
53 format!("{edge_counts:?}")
54 );
55 }
56
57 #[test]
58 fn partial_eq() {
59 let edge_counts_0 = EdgeCounts {
60 incoming: vec![1, 2],
61 outgoing: vec![2, 1],
62 };
63 let edge_counts_1 = EdgeCounts {
64 incoming: vec![2, 3],
65 outgoing: vec![3, 2],
66 };
67
68 assert_eq!(edge_counts_0, edge_counts_0.clone());
69 assert!(edge_counts_0 != edge_counts_1);
70 }
71}