@@ -289,6 +289,7 @@ fn dense_sparse_intersect<T: Idx>(
289289// hybrid REL dense
290290impl < T : Idx > BitRelations < BitSet < T > > for HybridBitSet < T > {
291291 fn union ( & mut self , other : & BitSet < T > ) -> bool {
292+ assert_eq ! ( self . domain_size( ) , other. domain_size) ;
292293 match self {
293294 HybridBitSet :: Sparse ( sparse) => {
294295 // `self` is sparse and `other` is dense. To
@@ -316,6 +317,7 @@ impl<T: Idx> BitRelations<BitSet<T>> for HybridBitSet<T> {
316317 }
317318
318319 fn subtract ( & mut self , other : & BitSet < T > ) -> bool {
320+ assert_eq ! ( self . domain_size( ) , other. domain_size) ;
319321 match self {
320322 HybridBitSet :: Sparse ( sparse) => {
321323 sequential_update ( |elem| sparse. remove ( elem) , other. iter ( ) )
@@ -325,6 +327,7 @@ impl<T: Idx> BitRelations<BitSet<T>> for HybridBitSet<T> {
325327 }
326328
327329 fn intersect ( & mut self , other : & BitSet < T > ) -> bool {
330+ assert_eq ! ( self . domain_size( ) , other. domain_size) ;
328331 match self {
329332 HybridBitSet :: Sparse ( sparse) => sparse_intersect ( sparse, |elem| other. contains ( * elem) ) ,
330333 HybridBitSet :: Dense ( dense) => dense. intersect ( other) ,
@@ -385,7 +388,6 @@ impl<T: Idx> BitRelations<HybridBitSet<T>> for HybridBitSet<T> {
385388 // Both sets are sparse. Add the elements in
386389 // `other_sparse` to `self` one at a time. This
387390 // may or may not cause `self` to be densified.
388- assert_eq ! ( self . domain_size( ) , other. domain_size( ) ) ;
389391 let mut changed = false ;
390392 for elem in other_sparse. iter ( ) {
391393 changed |= self . insert ( * elem) ;
0 commit comments