iterator
Iterates through the items in the set, according to the options. The default options (.{}) will iterate indices of set bits in ascending order. Modifications to the underlying bit set may or may not be observed by the iterator. Resizing the underlying bit set invalidates the iterator.
Function parameters
Parameters
- self:*const Self
A bit set with runtime-known size, backed by an allocated slice
Types
- DynamicBitSetUnmanaged
- A bit set with runtime-known size, backed by an allocated slice
- DynamicBitSet
- A bit set with runtime-known size, backed by an allocated slice
- IteratorOptions
- Options for configuring an iterator over a bit set
- Range
- A range of indices within a bitset.
Returns the optimal static bit set type for the specified number
Functions
- StaticBitSet
- Returns the optimal static bit set type for the specified number
- IntegerBitSet
- A bit set with static size, which is backed by a single integer.
- ArrayBitSet
- A bit set with static size, which is backed by an array of usize.
Source
Implementation
pub fn iterator(self: *const Self, comptime options: IteratorOptions) Iterator(options) {
const num_masks = numMasks(self.bit_length);
const padding_bits = num_masks * @bitSizeOf(MaskInt) - self.bit_length;
const last_item_mask = (~@as(MaskInt, 0)) >> @as(ShiftInt, @intCast(padding_bits));
return Iterator(options).init(self.masks[0..num_masks], last_item_mask);
}