@@ -289,6 +289,7 @@ fn dense_sparse_intersect<T: Idx>(
289
289
// hybrid REL dense
290
290
impl < T : Idx > BitRelations < BitSet < T > > for HybridBitSet < T > {
291
291
fn union ( & mut self , other : & BitSet < T > ) -> bool {
292
+ assert_eq ! ( self . domain_size( ) , other. domain_size) ;
292
293
match self {
293
294
HybridBitSet :: Sparse ( sparse) => {
294
295
// `self` is sparse and `other` is dense. To
@@ -316,6 +317,7 @@ impl<T: Idx> BitRelations<BitSet<T>> for HybridBitSet<T> {
316
317
}
317
318
318
319
fn subtract ( & mut self , other : & BitSet < T > ) -> bool {
320
+ assert_eq ! ( self . domain_size( ) , other. domain_size) ;
319
321
match self {
320
322
HybridBitSet :: Sparse ( sparse) => {
321
323
sequential_update ( |elem| sparse. remove ( elem) , other. iter ( ) )
@@ -325,6 +327,7 @@ impl<T: Idx> BitRelations<BitSet<T>> for HybridBitSet<T> {
325
327
}
326
328
327
329
fn intersect ( & mut self , other : & BitSet < T > ) -> bool {
330
+ assert_eq ! ( self . domain_size( ) , other. domain_size) ;
328
331
match self {
329
332
HybridBitSet :: Sparse ( sparse) => sparse_intersect ( sparse, |elem| other. contains ( * elem) ) ,
330
333
HybridBitSet :: Dense ( dense) => dense. intersect ( other) ,
@@ -385,7 +388,6 @@ impl<T: Idx> BitRelations<HybridBitSet<T>> for HybridBitSet<T> {
385
388
// Both sets are sparse. Add the elements in
386
389
// `other_sparse` to `self` one at a time. This
387
390
// may or may not cause `self` to be densified.
388
- assert_eq ! ( self . domain_size( ) , other. domain_size( ) ) ;
389
391
let mut changed = false ;
390
392
for elem in other_sparse. iter ( ) {
391
393
changed |= self . insert ( * elem) ;
0 commit comments