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
573 574 575 576 577 578 579 580 581 582
pub fn toggleFirstSet(self: *Self) ?usize { var offset: usize = 0; const mask = for (&self.masks) |*mask| { if (mask.* != 0) break mask; offset += @bitSizeOf(MaskInt); } else return null; const index = @ctz(mask.*); mask.* &= (mask.* - 1); return offset + index; }
Finds the index of the first set bit, and unsets it. If no bits are set, returns null.