Skip to content

Commit 8192f6b

Browse files
committed
Add functions to GrowableBitSet.
1 parent 86a49fd commit 8192f6b

1 file changed

Lines changed: 26 additions & 0 deletions

File tree

compiler/rustc_index/src/bit_set.rs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1336,13 +1336,29 @@ impl<T: Idx> GrowableBitSet<T> {
13361336
self.bit_set.insert(elem)
13371337
}
13381338

1339+
#[inline]
1340+
pub fn insert_range(&mut self, elems: Range<T>) {
1341+
self.ensure(elems.end.index());
1342+
self.bit_set.insert_range(elems);
1343+
}
1344+
13391345
/// Returns `true` if the set has changed.
13401346
#[inline]
13411347
pub fn remove(&mut self, elem: T) -> bool {
13421348
self.ensure(elem.index() + 1);
13431349
self.bit_set.remove(elem)
13441350
}
13451351

1352+
#[inline]
1353+
pub fn clear(&mut self) {
1354+
self.bit_set.clear();
1355+
}
1356+
1357+
#[inline]
1358+
pub fn count(&self) -> usize {
1359+
self.bit_set.count()
1360+
}
1361+
13461362
#[inline]
13471363
pub fn is_empty(&self) -> bool {
13481364
self.bit_set.is_empty()
@@ -1354,6 +1370,16 @@ impl<T: Idx> GrowableBitSet<T> {
13541370
self.bit_set.words.get(word_index).is_some_and(|word| (word & mask) != 0)
13551371
}
13561372

1373+
#[inline]
1374+
pub fn contains_any(&self, elems: Range<T>) -> bool {
1375+
if elems.start.index() < self.bit_set.domain_size {
1376+
self.bit_set
1377+
.contains_any(elems.start..T::new(elems.end.index().min(self.bit_set.domain_size)))
1378+
} else {
1379+
false
1380+
}
1381+
}
1382+
13571383
#[inline]
13581384
pub fn iter(&self) -> BitIter<'_, T> {
13591385
self.bit_set.iter()

0 commit comments

Comments
 (0)