@@ -185,21 +185,11 @@ impl<T: Idx> DenseBitSet<T> {
185185 self . words . iter ( ) . all ( |a| * a == 0 )
186186 }
187187
188- /// Insert `elem`. Returns whether the set has changed.
188+ /// Inserts `value` into the set, and returns true if the set has changed
189+ /// (i.e. the set did not contain the value).
189190 #[ inline]
190- pub fn insert ( & mut self , elem : T ) -> bool {
191- assert ! (
192- elem. index( ) < self . domain_size,
193- "inserting element at index {} but domain size is {}" ,
194- elem. index( ) ,
195- self . domain_size,
196- ) ;
197- let ( word_index, mask) = word_index_and_mask ( elem) ;
198- let word_ref = & mut self . words [ word_index] ;
199- let word = * word_ref;
200- let new_word = word | mask;
201- * word_ref = new_word;
202- new_word != word
191+ pub fn insert ( & mut self , value : T ) -> bool {
192+ raw:: insert ( self . domain_size , & mut self . words , value. index ( ) )
203193 }
204194
205195 #[ inline]
@@ -223,16 +213,11 @@ impl<T: Idx> DenseBitSet<T> {
223213 raw:: contains_any ( self . domain_size , & self . words , ( start, end) )
224214 }
225215
226- /// Returns `true` if the set has changed.
216+ /// Removes `value` from the set, and returns true if the set has changed
217+ /// (i.e. the set did contain the value).
227218 #[ inline]
228- pub fn remove ( & mut self , elem : T ) -> bool {
229- assert ! ( elem. index( ) < self . domain_size) ;
230- let ( word_index, mask) = word_index_and_mask ( elem) ;
231- let word_ref = & mut self . words [ word_index] ;
232- let word = * word_ref;
233- let new_word = word & !mask;
234- * word_ref = new_word;
235- new_word != word
219+ pub fn remove ( & mut self , value : T ) -> bool {
220+ raw:: remove ( self . domain_size , & mut self . words , value. index ( ) )
236221 }
237222
238223 /// Iterates over the indices of set bits in a sorted order.
@@ -1608,12 +1593,9 @@ fn num_chunks<T: Idx>(domain_size: T) -> usize {
16081593 domain_size. index ( ) . div_ceil ( CHUNK_BITS )
16091594}
16101595
1611- #[ inline]
1596+ #[ inline( always ) ]
16121597fn word_index_and_mask < T : Idx > ( elem : T ) -> ( usize , Word ) {
1613- let elem = elem. index ( ) ;
1614- let word_index = elem / WORD_BITS ;
1615- let mask = 1 << ( elem % WORD_BITS ) ;
1616- ( word_index, mask)
1598+ raw:: word_index_and_mask ( elem. index ( ) )
16171599}
16181600
16191601#[ inline]
0 commit comments