authorgravatar for jay@jayschwa.netJay Petacat <jay@jayschwa.net> 2023-03-25 00:03:22-06:00
committergravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2023-03-25 13:28:25+02:00
logfcc86832d685c09c37570562ee1036aa1eb18ea6
tree49537586210d5543ac7d7949a1b6ae32f41d7458
parent49e33a2f23c2de4b27cf5ffb4a802ce6cf76f387

std.enums.IndexedSet: Add initOne and initMany


1 files changed, 14 insertions(+), 14 deletions(-)

lib/std/enums.zig+14-14
......@@ -775,6 +775,18 @@ pub fn IndexedSet(comptime I: type, comptime Ext: fn (type) type) type {
775775 return .{ .bits = BitSet.initFull() };
776776 }
777777
778 /// Returns a set containing multiple keys.
779 pub fn initMany(keys: []const Key) Self {
780 var set = initEmpty();
781 for (keys) |key| set.insert(key);
782 return set;
783 }
784
785 /// Returns a set containing a single key.
786 pub fn initOne(key: Key) Self {
787 return initMany(&[_]Key{key});
788 }
789
778790 /// Returns the number of keys in the set.
779791 pub fn count(self: Self) usize {
780792 return self.bits.count();
......@@ -900,20 +912,8 @@ test "pure EnumSet fns" {
900912
901913 const empty = EnumSet(Suit).initEmpty();
902914 const full = EnumSet(Suit).initFull();
903
904 const black = black: {
905 var set = EnumSet(Suit).initEmpty();
906 set.insert(.spades);
907 set.insert(.clubs);
908 break :black set;
909 };
910
911 const red = red: {
912 var set = EnumSet(Suit).initEmpty();
913 set.insert(.hearts);
914 set.insert(.diamonds);
915 break :red set;
916 };
915 const black = EnumSet(Suit).initMany(&[_]Suit{ .spades, .clubs });
916 const red = EnumSet(Suit).initMany(&[_]Suit{ .hearts, .diamonds });
917917
918918 try testing.expect(empty.eql(empty));
919919 try testing.expect(full.eql(full));