Function toggleFirstSet [src]
Finds the index of the first set bit, and unsets it.
If no bits are set, returns null.
Prototype
pub fn toggleFirstSet(self: *Self) ?usize
Parameters
self: *Self
Source
pub fn toggleFirstSet(self: *Self) ?usize {
var offset: usize = 0;
var mask = self.masks;
while (offset < self.bit_length) {
if (mask[0] != 0) break;
mask += 1;
offset += @bitSizeOf(MaskInt);
} else return null;
const index = @ctz(mask[0]);
mask[0] &= (mask[0] - 1);
return offset + index;
}