pub fn toggleFirstSet(self: *Self) ?usize
Finds the index of the first set bit, and unsets it. If no bits are set, returns null.
self: *Self
993 994 995 996 997 998 999 1000 1001 1002 1003 1004
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; }
Finds the index of the first set bit, and unsets it. If no bits are set, returns null.