@@ -25,8 +25,12 @@ impl<K: Hash, V> CollideMap<K, V> {
25
25
}
26
26
}
27
27
28
+ pub fn capacity ( & self ) -> usize {
29
+ self . inner . capacity ( )
30
+ }
31
+
28
32
pub fn clear ( & mut self ) {
29
- self . inner . clear ( ) ;
33
+ self . inner . clear ( )
30
34
}
31
35
32
36
pub fn contains_key ( & self , k : & K ) -> bool {
@@ -45,6 +49,10 @@ impl<K: Hash, V> CollideMap<K, V> {
45
49
self . inner . insert ( get_hash_xxh ( k) , v)
46
50
}
47
51
52
+ pub fn is_empty ( & self ) -> bool {
53
+ self . inner . is_empty ( )
54
+ }
55
+
48
56
pub fn len ( & self ) -> usize {
49
57
self . inner . len ( )
50
58
}
@@ -53,6 +61,14 @@ impl<K: Hash, V> CollideMap<K, V> {
53
61
self . inner . remove ( & get_hash_xxh ( k) )
54
62
}
55
63
64
+ pub fn reserve ( & mut self , additional : usize ) {
65
+ self . inner . reserve ( additional)
66
+ }
67
+
68
+ pub fn shrink_to_fit ( & mut self ) {
69
+ self . inner . shrink_to_fit ( )
70
+ }
71
+
56
72
pub fn values ( & self ) -> impl Iterator < Item = & V > {
57
73
self . inner . values ( )
58
74
}
@@ -76,8 +92,12 @@ impl<K: Hash> CollideSet<K> {
76
92
}
77
93
}
78
94
95
+ pub fn capacity ( & self ) -> usize {
96
+ self . inner . capacity ( )
97
+ }
98
+
79
99
pub fn clear ( & mut self ) {
80
- self . inner . clear ( ) ;
100
+ self . inner . clear ( )
81
101
}
82
102
83
103
pub fn contains ( & self , k : & K ) -> bool {
@@ -88,6 +108,18 @@ impl<K: Hash> CollideSet<K> {
88
108
self . inner . insert ( get_hash_xxh ( & k) )
89
109
}
90
110
111
+ pub fn is_disjoint ( & self , other : & CollideSet < K > ) -> bool {
112
+ self . inner . is_disjoint ( & other. inner )
113
+ }
114
+
115
+ pub fn is_empty ( & self ) -> bool {
116
+ self . inner . is_empty ( )
117
+ }
118
+
119
+ pub fn is_subset ( & self , other : & CollideSet < K > ) -> bool {
120
+ self . inner . is_subset ( & other. inner )
121
+ }
122
+
91
123
pub fn len ( & self ) -> usize {
92
124
self . inner . len ( )
93
125
}
@@ -96,17 +128,35 @@ impl<K: Hash> CollideSet<K> {
96
128
self . inner . remove ( & get_hash_xxh ( k) )
97
129
}
98
130
99
- pub fn union ( & self , other : & CollideSet < K > ) -> CollideSet < K > {
100
- let union_m = self . inner . union ( & other. inner ) ;
101
- let mut union: CollideSet < K > = CollideSet :: new ( ) ;
102
- union. inner = union_m. map ( |k| k. clone ( ) ) . collect ( ) ;
103
- union
131
+ pub fn reserve ( & mut self , additional : usize ) {
132
+ self . inner . reserve ( additional)
133
+ }
134
+
135
+ pub fn difference ( & self , other : & CollideSet < K > ) -> CollideSet < K > {
136
+ let mut result: CollideSet < K > = CollideSet :: new ( ) ;
137
+ result. inner = self . inner . difference ( & other. inner ) . cloned ( ) . collect ( ) ;
138
+ result
139
+ }
140
+
141
+ pub fn symmetric_difference ( & self , other : & CollideSet < K > ) -> CollideSet < K > {
142
+ let mut result: CollideSet < K > = CollideSet :: new ( ) ;
143
+ result. inner = self
144
+ . inner
145
+ . symmetric_difference ( & other. inner )
146
+ . cloned ( )
147
+ . collect ( ) ;
148
+ result
104
149
}
105
150
106
151
pub fn intersection ( & self , other : & CollideSet < K > ) -> CollideSet < K > {
107
- let intersection_m = self . inner . intersection ( & other. inner ) ;
108
- let mut intersection: CollideSet < K > = CollideSet :: new ( ) ;
109
- intersection. inner = intersection_m. map ( |k| k. clone ( ) ) . collect ( ) ;
110
- intersection
152
+ let mut result: CollideSet < K > = CollideSet :: new ( ) ;
153
+ result. inner = self . inner . intersection ( & other. inner ) . cloned ( ) . collect ( ) ;
154
+ result
155
+ }
156
+
157
+ pub fn union ( & self , other : & CollideSet < K > ) -> CollideSet < K > {
158
+ let mut result: CollideSet < K > = CollideSet :: new ( ) ;
159
+ result. inner = self . inner . union ( & other. inner ) . cloned ( ) . collect ( ) ;
160
+ result
111
161
}
112
162
}
0 commit comments