@@ -29,7 +29,7 @@ import "sync"
29
29
30
30
type threadSafeSet [T comparable ] struct {
31
31
sync.RWMutex
32
- uss threadUnsafeSet [T ]
32
+ uss * threadUnsafeSet [T ]
33
33
}
34
34
35
35
func newThreadSafeSet [T comparable ]() * threadSafeSet [T ] {
@@ -123,7 +123,7 @@ func (t *threadSafeSet[T]) Union(other Set[T]) Set[T] {
123
123
t .RLock ()
124
124
o .RLock ()
125
125
126
- unsafeUnion := t .uss .Union (o .uss ).(threadUnsafeSet [T ])
126
+ unsafeUnion := t .uss .Union (o .uss ).(* threadUnsafeSet [T ])
127
127
ret := & threadSafeSet [T ]{uss : unsafeUnion }
128
128
t .RUnlock ()
129
129
o .RUnlock ()
@@ -136,7 +136,7 @@ func (t *threadSafeSet[T]) Intersect(other Set[T]) Set[T] {
136
136
t .RLock ()
137
137
o .RLock ()
138
138
139
- unsafeIntersection := t .uss .Intersect (o .uss ).(threadUnsafeSet [T ])
139
+ unsafeIntersection := t .uss .Intersect (o .uss ).(* threadUnsafeSet [T ])
140
140
ret := & threadSafeSet [T ]{uss : unsafeIntersection }
141
141
t .RUnlock ()
142
142
o .RUnlock ()
@@ -149,7 +149,7 @@ func (t *threadSafeSet[T]) Difference(other Set[T]) Set[T] {
149
149
t .RLock ()
150
150
o .RLock ()
151
151
152
- unsafeDifference := t .uss .Difference (o .uss ).(threadUnsafeSet [T ])
152
+ unsafeDifference := t .uss .Difference (o .uss ).(* threadUnsafeSet [T ])
153
153
ret := & threadSafeSet [T ]{uss : unsafeDifference }
154
154
t .RUnlock ()
155
155
o .RUnlock ()
@@ -162,7 +162,7 @@ func (t *threadSafeSet[T]) SymmetricDifference(other Set[T]) Set[T] {
162
162
t .RLock ()
163
163
o .RLock ()
164
164
165
- unsafeDifference := t .uss .SymmetricDifference (o .uss ).(threadUnsafeSet [T ])
165
+ unsafeDifference := t .uss .SymmetricDifference (o .uss ).(* threadUnsafeSet [T ])
166
166
ret := & threadSafeSet [T ]{uss : unsafeDifference }
167
167
t .RUnlock ()
168
168
o .RUnlock ()
@@ -177,7 +177,7 @@ func (t *threadSafeSet[T]) Clear() {
177
177
178
178
func (t * threadSafeSet [T ]) Remove (v T ) {
179
179
t .Lock ()
180
- delete (t .uss , v )
180
+ delete (* t .uss , v )
181
181
t .Unlock ()
182
182
}
183
183
@@ -190,12 +190,12 @@ func (t *threadSafeSet[T]) RemoveAll(i ...T) {
190
190
func (t * threadSafeSet [T ]) Cardinality () int {
191
191
t .RLock ()
192
192
defer t .RUnlock ()
193
- return len (t .uss )
193
+ return len (* t .uss )
194
194
}
195
195
196
196
func (t * threadSafeSet [T ]) Each (cb func (T ) bool ) {
197
197
t .RLock ()
198
- for elem := range t .uss {
198
+ for elem := range * t .uss {
199
199
if cb (elem ) {
200
200
break
201
201
}
@@ -208,7 +208,7 @@ func (t *threadSafeSet[T]) Iter() <-chan T {
208
208
go func () {
209
209
t .RLock ()
210
210
211
- for elem := range t .uss {
211
+ for elem := range * t .uss {
212
212
ch <- elem
213
213
}
214
214
close (ch )
@@ -224,7 +224,7 @@ func (t *threadSafeSet[T]) Iterator() *Iterator[T] {
224
224
go func () {
225
225
t .RLock ()
226
226
L:
227
- for elem := range t .uss {
227
+ for elem := range * t .uss {
228
228
select {
229
229
case <- stopCh :
230
230
break L
@@ -253,7 +253,7 @@ func (t *threadSafeSet[T]) Equal(other Set[T]) bool {
253
253
func (t * threadSafeSet [T ]) Clone () Set [T ] {
254
254
t .RLock ()
255
255
256
- unsafeClone := t .uss .Clone ().(threadUnsafeSet [T ])
256
+ unsafeClone := t .uss .Clone ().(* threadUnsafeSet [T ])
257
257
ret := & threadSafeSet [T ]{uss : unsafeClone }
258
258
t .RUnlock ()
259
259
return ret
@@ -275,7 +275,7 @@ func (t *threadSafeSet[T]) Pop() (T, bool) {
275
275
func (t * threadSafeSet [T ]) ToSlice () []T {
276
276
keys := make ([]T , 0 , t .Cardinality ())
277
277
t .RLock ()
278
- for elem := range t .uss {
278
+ for elem := range * t .uss {
279
279
keys = append (keys , elem )
280
280
}
281
281
t .RUnlock ()
0 commit comments