authorgravatar for saurabh.m@proton.meSaurabh Mishra <saurabh.m@proton.me> 2026-02-18 12:38:26-08:00
committergravatar for saurabh.m@proton.meSaurabh Mishra <saurabh.m@proton.me> 2026-02-18 12:38:26-08:00
log293710c1cd3160787e882113014c022ce665d16d
tree401fea3ab8974b75c8b7688f14b2f7103d5e9c3b
parent23252c27beda48df95beb7bcf53b900e93fc7441

use `.empty` for default field values intead of `init()` and introduce `initContext()`


1 files changed, 36 insertions(+), 28 deletions(-)

lib/std/priority_dequeue.zig+36-28
......@@ -23,10 +23,17 @@ pub fn PriorityDequeue(comptime T: type, comptime Context: type, comptime compar
2323 len: usize,
2424 context: Context,
2525
26 /// Initialize and return a new priority dequeue.
27 pub fn init(context: Context) Self {
26 /// A priority dequeue containing no elements.
27 pub const empty: Self = .{
28 .items = &.{},
29 .len = 0,
30 .context = undefined,
31 };
32
33 /// Initialize and return a new priority dequeue with context.
34 pub fn initContext(context: Context) Self {
2835 return Self{
29 .items = &[_]T{},
36 .items = &.{},
3037 .len = 0,
3138 .context = context,
3239 };
......@@ -451,7 +458,8 @@ const PDQ = PriorityDequeue(u32, void, lessThanComparison);
451458
452459test "push and pop min" {
453460 const gpa = std.testing.allocator;
454 var queue = PDQ.init({});
461
462 var queue: PDQ = .empty;
455463 defer queue.deinit(gpa);
456464
457465 try queue.push(gpa, 54);
......@@ -480,7 +488,7 @@ test "push and pop min structs" {
480488 _ = context;
481489 return std.math.order(a.size, b.size);
482490 }
483 }.order).init({});
491 }.order).initContext({});
484492 defer queue.deinit(gpa);
485493
486494 try queue.push(gpa, .{ .size = 54 });
......@@ -501,7 +509,7 @@ test "push and pop min structs" {
501509test "push and pop max" {
502510 const gpa = std.testing.allocator;
503511
504 var queue = PDQ.init({});
512 var queue: PDQ = .empty;
505513 defer queue.deinit(gpa);
506514
507515 try queue.push(gpa, 54);
......@@ -522,7 +530,7 @@ test "push and pop max" {
522530test "push and pop same min" {
523531 const gpa = std.testing.allocator;
524532
525 var queue = PDQ.init({});
533 var queue: PDQ = .empty;
526534 defer queue.deinit(gpa);
527535
528536 try queue.push(gpa, 1);
......@@ -543,7 +551,7 @@ test "push and pop same min" {
543551test "push and pop same max" {
544552 const gpa = std.testing.allocator;
545553
546 var queue = PDQ.init({});
554 var queue: PDQ = .empty;
547555 defer queue.deinit(gpa);
548556
549557 try queue.push(gpa, 1);
......@@ -564,7 +572,7 @@ test "push and pop same max" {
564572test "popOrNull empty" {
565573 const gpa = std.testing.allocator;
566574
567 var queue = PDQ.init({});
575 var queue: PDQ = .empty;
568576 defer queue.deinit(gpa);
569577
570578 try expect(queue.popMin() == null);
......@@ -574,7 +582,7 @@ test "popOrNull empty" {
574582test "edge case 3 elements" {
575583 const gpa = std.testing.allocator;
576584
577 var queue = PDQ.init({});
585 var queue: PDQ = .empty;
578586 defer queue.deinit(gpa);
579587
580588 try queue.push(gpa, 9);
......@@ -589,7 +597,7 @@ test "edge case 3 elements" {
589597test "edge case 3 elements max" {
590598 const gpa = std.testing.allocator;
591599
592 var queue = PDQ.init({});
600 var queue: PDQ = .empty;
593601 defer queue.deinit(gpa);
594602
595603 try queue.push(gpa, 9);
......@@ -604,7 +612,7 @@ test "edge case 3 elements max" {
604612test "peekMin" {
605613 const gpa = std.testing.allocator;
606614
607 var queue = PDQ.init({});
615 var queue: PDQ = .empty;
608616 defer queue.deinit(gpa);
609617
610618 try expect(queue.peekMin() == null);
......@@ -620,7 +628,7 @@ test "peekMin" {
620628test "peekMax" {
621629 const gpa = std.testing.allocator;
622630
623 var queue = PDQ.init({});
631 var queue: PDQ = .empty;
624632 defer queue.deinit(gpa);
625633
626634 try expect(queue.peekMin() == null);
......@@ -636,7 +644,7 @@ test "peekMax" {
636644test "sift up with odd indices, popMin" {
637645 const gpa = std.testing.allocator;
638646
639 var queue = PDQ.init({});
647 var queue: PDQ = .empty;
640648 defer queue.deinit(gpa);
641649
642650 const items = [_]u32{ 15, 7, 21, 14, 13, 22, 12, 6, 7, 25, 5, 24, 11, 16, 15, 24, 2, 1 };
......@@ -653,7 +661,7 @@ test "sift up with odd indices, popMin" {
653661test "sift up with odd indices, popMax" {
654662 const gpa = std.testing.allocator;
655663
656 var queue = PDQ.init({});
664 var queue: PDQ = .empty;
657665 defer queue.deinit(gpa);
658666
659667 const items = [_]u32{ 15, 7, 21, 14, 13, 22, 12, 6, 7, 25, 5, 24, 11, 16, 15, 24, 2, 1 };
......@@ -670,7 +678,7 @@ test "sift up with odd indices, popMax" {
670678test "pushSlice min" {
671679 const gpa = std.testing.allocator;
672680
673 var queue = PDQ.init({});
681 var queue: PDQ = .empty;
674682 defer queue.deinit(gpa);
675683
676684 const items = [_]u32{ 15, 7, 21, 14, 13, 22, 12, 6, 7, 25, 5, 24, 11, 16, 15, 24, 2, 1 };
......@@ -685,7 +693,7 @@ test "pushSlice min" {
685693test "pushSlice max" {
686694 const gpa = std.testing.allocator;
687695
688 var queue = PDQ.init({});
696 var queue: PDQ = .empty;
689697 defer queue.deinit(gpa);
690698
691699 const items = [_]u32{ 15, 7, 21, 14, 13, 22, 12, 6, 7, 25, 5, 24, 11, 16, 15, 24, 2, 1 };
......@@ -742,7 +750,7 @@ test "fromOwnedSlice" {
742750test "update min queue" {
743751 const gpa = std.testing.allocator;
744752
745 var queue = PDQ.init({});
753 var queue: PDQ = .empty;
746754 defer queue.deinit(gpa);
747755
748756 try queue.push(gpa, 55);
......@@ -759,7 +767,7 @@ test "update min queue" {
759767test "update same min queue" {
760768 const gpa = std.testing.allocator;
761769
762 var queue = PDQ.init({});
770 var queue: PDQ = .empty;
763771 defer queue.deinit(gpa);
764772
765773 try queue.push(gpa, 1);
......@@ -777,7 +785,7 @@ test "update same min queue" {
777785test "update max queue" {
778786 const gpa = std.testing.allocator;
779787
780 var queue = PDQ.init({});
788 var queue: PDQ = .empty;
781789 defer queue.deinit(gpa);
782790
783791 try queue.push(gpa, 55);
......@@ -795,7 +803,7 @@ test "update max queue" {
795803test "update same max queue" {
796804 const gpa = std.testing.allocator;
797805
798 var queue = PDQ.init({});
806 var queue: PDQ = .empty;
799807 defer queue.deinit(gpa);
800808
801809 try queue.push(gpa, 1);
......@@ -813,7 +821,7 @@ test "update same max queue" {
813821test "update after pop" {
814822 const gpa = std.testing.allocator;
815823
816 var queue = PDQ.init({});
824 var queue: PDQ = .empty;
817825 defer queue.deinit(gpa);
818826
819827 try queue.push(gpa, 1);
......@@ -824,7 +832,7 @@ test "update after pop" {
824832test "iterator" {
825833 const gpa = std.testing.allocator;
826834
827 var queue = PDQ.init({});
835 var queue: PDQ = .empty;
828836 var map = std.AutoHashMap(u32, void).init(testing.allocator);
829837 defer {
830838 queue.deinit(gpa);
......@@ -848,7 +856,7 @@ test "iterator" {
848856test "pop at index" {
849857 const gpa = std.testing.allocator;
850858
851 var queue = PDQ.init({});
859 var queue: PDQ = .empty;
852860 defer queue.deinit(gpa);
853861
854862 try queue.push(gpa, 3);
......@@ -873,7 +881,7 @@ test "pop at index" {
873881test "iterator while empty" {
874882 const gpa = std.testing.allocator;
875883
876 var queue = PDQ.init({});
884 var queue: PDQ = .empty;
877885 defer queue.deinit(gpa);
878886
879887 var it = queue.iterator();
......@@ -884,7 +892,7 @@ test "iterator while empty" {
884892test "shrinkAndFree" {
885893 const gpa = std.testing.allocator;
886894
887 var queue = PDQ.init({});
895 var queue: PDQ = .empty;
888896 defer queue.deinit(gpa);
889897
890898 try queue.ensureTotalCapacity(gpa, 4);
......@@ -1031,7 +1039,7 @@ test "push and pop" {
10311039
10321040 const context = [_]u32{ 5, 3, 4, 2, 2, 8, 0 };
10331041
1034 var queue = CPDQ.init(context[0..]);
1042 var queue: CPDQ = .initContext(context[0..]);
10351043 defer queue.deinit(gpa);
10361044
10371045 try queue.push(gpa, 0);
......@@ -1060,7 +1068,7 @@ test "don't compare a value to a copy of itself" {
10601068 all_cmps_unique = all_cmps_unique and (a != b);
10611069 return std.math.order(a, b);
10621070 }
1063 }.uniqueLessThan).init({});
1071 }.uniqueLessThan).initContext({});
10641072 defer depq.deinit(gpa);
10651073
10661074 try depq.push(gpa, 1);