File tree Expand file tree Collapse file tree 1 file changed +6
-3
lines changed Expand file tree Collapse file tree 1 file changed +6
-3
lines changed Original file line number Diff line number Diff line change @@ -271,10 +271,10 @@ fn dense_sparse_intersect<T: Idx>(
271271 dense : & BitSet < T > ,
272272 sparse : & SparseBitSet < T > ,
273273) -> ( SparseBitSet < T > , bool ) {
274- let n = dense. count ( ) ;
275274 let mut sparse_copy = sparse. clone ( ) ;
276275 sparse_intersect ( & mut sparse_copy, |el| !dense. contains ( * el) ) ;
277- ( sparse_copy, dense. count ( ) != n)
276+ let n = sparse_copy. len ( ) ;
277+ ( sparse_copy, n != dense. count ( ) )
278278}
279279
280280impl < T : Idx > BitRelations < HybridBitSet < T > > for BitSet < T > {
@@ -303,7 +303,10 @@ impl<T: Idx> BitRelations<HybridBitSet<T>> for BitSet<T> {
303303 match other {
304304 HybridBitSet :: Sparse ( sparse) => {
305305 let ( updated, changed) = dense_sparse_intersect ( self , sparse) ;
306- * self = updated. to_dense ( ) ;
306+ self . clear ( ) ;
307+ for elem in updated. iter ( ) {
308+ self . insert ( * elem) ;
309+ }
307310 changed
308311 }
309312 HybridBitSet :: Dense ( dense) => self . intersect ( dense) ,
You can’t perform that action at this time.
0 commit comments