about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorNiko Matsakis <niko@alum.mit.edu>2018-07-23 18:13:35 +0300
committerNiko Matsakis <niko@alum.mit.edu>2018-07-25 06:38:20 +0300
commit71fef95e765f812f2eada304f1a6be00a814c0e9 (patch)
tree40c46eace12a510c63f8078f4dd6df943f3f8097 /src
parent3f0fb4f7d849a12bce2996c03214601255bfe82e (diff)
downloadrust-71fef95e765f812f2eada304f1a6be00a814c0e9.tar.gz
rust-71fef95e765f812f2eada304f1a6be00a814c0e9.zip
SparseBitMatrix: add `ensure_row` helper fn
Diffstat (limited to 'src')
-rw-r--r--src/librustc_data_structures/bitvec.rs18
1 files changed, 9 insertions, 9 deletions
diff --git a/src/librustc_data_structures/bitvec.rs b/src/librustc_data_structures/bitvec.rs
index bc7b8f8df46..f564f46dd2b 100644
--- a/src/librustc_data_structures/bitvec.rs
+++ b/src/librustc_data_structures/bitvec.rs
@@ -313,14 +313,18 @@ impl<R: Idx, C: Idx> SparseBitMatrix<R, C> {
         }
     }
 
+    fn ensure_row(&mut self, row: R) {
+        let columns = self.columns;
+        self.vector
+            .ensure_contains_elem(row, || BitVector::new(columns));
+    }
+
     /// Sets the cell at `(row, column)` to true. Put another way, insert
     /// `column` to the bitset for `row`.
     ///
     /// Returns true if this changed the matrix, and false otherwise.
     pub fn add(&mut self, row: R, column: C) -> bool {
-        let columns = self.columns;
-        self.vector
-            .ensure_contains_elem(row, || BitVector::new(columns));
+        self.ensure_row(row);
         self.vector[row].insert(column)
     }
 
@@ -344,18 +348,14 @@ impl<R: Idx, C: Idx> SparseBitMatrix<R, C> {
             return false;
         }
 
-        let columns = self.columns;
-        self.vector
-            .ensure_contains_elem(write, || BitVector::new(columns));
+        self.ensure_row(write);
         let (bitvec_read, bitvec_write) = self.vector.pick2_mut(read, write);
         bitvec_write.merge(bitvec_read)
     }
 
     /// Merge a row, `from`, into the `into` row.
     pub fn merge_into(&mut self, into: R, from: &BitVector<C>) -> bool {
-        let columns = self.columns;
-        self.vector
-            .ensure_contains_elem(into, || BitVector::new(columns));
+        self.ensure_row(into);
         self.vector[into].merge(from)
     }