@@ -313,14 +313,18 @@ impl<R: Idx, C: Idx> SparseBitMatrix<R, C> {
313
313
}
314
314
}
315
315
316
+ fn ensure_row ( & mut self , row : R ) {
317
+ let columns = self . columns ;
318
+ self . vector
319
+ . ensure_contains_elem ( row, || BitVector :: new ( columns) ) ;
320
+ }
321
+
316
322
/// Sets the cell at `(row, column)` to true. Put another way, insert
317
323
/// `column` to the bitset for `row`.
318
324
///
319
325
/// Returns true if this changed the matrix, and false otherwise.
320
326
pub fn add ( & mut self , row : R , column : C ) -> bool {
321
- let columns = self . columns ;
322
- self . vector
323
- . ensure_contains_elem ( row, || BitVector :: new ( columns) ) ;
327
+ self . ensure_row ( row) ;
324
328
self . vector [ row] . insert ( column)
325
329
}
326
330
@@ -344,18 +348,14 @@ impl<R: Idx, C: Idx> SparseBitMatrix<R, C> {
344
348
return false ;
345
349
}
346
350
347
- let columns = self . columns ;
348
- self . vector
349
- . ensure_contains_elem ( write, || BitVector :: new ( columns) ) ;
351
+ self . ensure_row ( write) ;
350
352
let ( bitvec_read, bitvec_write) = self . vector . pick2_mut ( read, write) ;
351
353
bitvec_write. merge ( bitvec_read)
352
354
}
353
355
354
356
/// Merge a row, `from`, into the `into` row.
355
357
pub fn merge_into ( & mut self , into : R , from : & BitVector < C > ) -> bool {
356
- let columns = self . columns ;
357
- self . vector
358
- . ensure_contains_elem ( into, || BitVector :: new ( columns) ) ;
358
+ self . ensure_row ( into) ;
359
359
self . vector [ into] . merge ( from)
360
360
}
361
361
0 commit comments