commit 293710c1cd3160787e882113014c022ce665d16d (tree)
parent 23252c27beda48df95beb7bcf53b900e93fc7441
Author: Saurabh Mishra <saurabh.m@proton.me>
Date: Wed, 18 Feb 2026 12:38:26 -0800
use `.empty` for default field values intead of `init()` and introduce `initContext()`
Diffstat:
1 file changed, 36 insertions(+), 28 deletions(-)
diff --git a/lib/std/priority_dequeue.zig b/lib/std/priority_dequeue.zig
@@ -23,10 +23,17 @@ pub fn PriorityDequeue(comptime T: type, comptime Context: type, comptime compar
len: usize,
context: Context,
- /// Initialize and return a new priority dequeue.
- pub fn init(context: Context) Self {
+ /// A priority dequeue containing no elements.
+ pub const empty: Self = .{
+ .items = &.{},
+ .len = 0,
+ .context = undefined,
+ };
+
+ /// Initialize and return a new priority dequeue with context.
+ pub fn initContext(context: Context) Self {
return Self{
- .items = &[_]T{},
+ .items = &.{},
.len = 0,
.context = context,
};
@@ -451,7 +458,8 @@ const PDQ = PriorityDequeue(u32, void, lessThanComparison);
test "push and pop min" {
const gpa = std.testing.allocator;
- var queue = PDQ.init({});
+
+ var queue: PDQ = .empty;
defer queue.deinit(gpa);
try queue.push(gpa, 54);
@@ -480,7 +488,7 @@ test "push and pop min structs" {
_ = context;
return std.math.order(a.size, b.size);
}
- }.order).init({});
+ }.order).initContext({});
defer queue.deinit(gpa);
try queue.push(gpa, .{ .size = 54 });
@@ -501,7 +509,7 @@ test "push and pop min structs" {
test "push and pop max" {
const gpa = std.testing.allocator;
- var queue = PDQ.init({});
+ var queue: PDQ = .empty;
defer queue.deinit(gpa);
try queue.push(gpa, 54);
@@ -522,7 +530,7 @@ test "push and pop max" {
test "push and pop same min" {
const gpa = std.testing.allocator;
- var queue = PDQ.init({});
+ var queue: PDQ = .empty;
defer queue.deinit(gpa);
try queue.push(gpa, 1);
@@ -543,7 +551,7 @@ test "push and pop same min" {
test "push and pop same max" {
const gpa = std.testing.allocator;
- var queue = PDQ.init({});
+ var queue: PDQ = .empty;
defer queue.deinit(gpa);
try queue.push(gpa, 1);
@@ -564,7 +572,7 @@ test "push and pop same max" {
test "popOrNull empty" {
const gpa = std.testing.allocator;
- var queue = PDQ.init({});
+ var queue: PDQ = .empty;
defer queue.deinit(gpa);
try expect(queue.popMin() == null);
@@ -574,7 +582,7 @@ test "popOrNull empty" {
test "edge case 3 elements" {
const gpa = std.testing.allocator;
- var queue = PDQ.init({});
+ var queue: PDQ = .empty;
defer queue.deinit(gpa);
try queue.push(gpa, 9);
@@ -589,7 +597,7 @@ test "edge case 3 elements" {
test "edge case 3 elements max" {
const gpa = std.testing.allocator;
- var queue = PDQ.init({});
+ var queue: PDQ = .empty;
defer queue.deinit(gpa);
try queue.push(gpa, 9);
@@ -604,7 +612,7 @@ test "edge case 3 elements max" {
test "peekMin" {
const gpa = std.testing.allocator;
- var queue = PDQ.init({});
+ var queue: PDQ = .empty;
defer queue.deinit(gpa);
try expect(queue.peekMin() == null);
@@ -620,7 +628,7 @@ test "peekMin" {
test "peekMax" {
const gpa = std.testing.allocator;
- var queue = PDQ.init({});
+ var queue: PDQ = .empty;
defer queue.deinit(gpa);
try expect(queue.peekMin() == null);
@@ -636,7 +644,7 @@ test "peekMax" {
test "sift up with odd indices, popMin" {
const gpa = std.testing.allocator;
- var queue = PDQ.init({});
+ var queue: PDQ = .empty;
defer queue.deinit(gpa);
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" {
test "sift up with odd indices, popMax" {
const gpa = std.testing.allocator;
- var queue = PDQ.init({});
+ var queue: PDQ = .empty;
defer queue.deinit(gpa);
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" {
test "pushSlice min" {
const gpa = std.testing.allocator;
- var queue = PDQ.init({});
+ var queue: PDQ = .empty;
defer queue.deinit(gpa);
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" {
test "pushSlice max" {
const gpa = std.testing.allocator;
- var queue = PDQ.init({});
+ var queue: PDQ = .empty;
defer queue.deinit(gpa);
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" {
test "update min queue" {
const gpa = std.testing.allocator;
- var queue = PDQ.init({});
+ var queue: PDQ = .empty;
defer queue.deinit(gpa);
try queue.push(gpa, 55);
@@ -759,7 +767,7 @@ test "update min queue" {
test "update same min queue" {
const gpa = std.testing.allocator;
- var queue = PDQ.init({});
+ var queue: PDQ = .empty;
defer queue.deinit(gpa);
try queue.push(gpa, 1);
@@ -777,7 +785,7 @@ test "update same min queue" {
test "update max queue" {
const gpa = std.testing.allocator;
- var queue = PDQ.init({});
+ var queue: PDQ = .empty;
defer queue.deinit(gpa);
try queue.push(gpa, 55);
@@ -795,7 +803,7 @@ test "update max queue" {
test "update same max queue" {
const gpa = std.testing.allocator;
- var queue = PDQ.init({});
+ var queue: PDQ = .empty;
defer queue.deinit(gpa);
try queue.push(gpa, 1);
@@ -813,7 +821,7 @@ test "update same max queue" {
test "update after pop" {
const gpa = std.testing.allocator;
- var queue = PDQ.init({});
+ var queue: PDQ = .empty;
defer queue.deinit(gpa);
try queue.push(gpa, 1);
@@ -824,7 +832,7 @@ test "update after pop" {
test "iterator" {
const gpa = std.testing.allocator;
- var queue = PDQ.init({});
+ var queue: PDQ = .empty;
var map = std.AutoHashMap(u32, void).init(testing.allocator);
defer {
queue.deinit(gpa);
@@ -848,7 +856,7 @@ test "iterator" {
test "pop at index" {
const gpa = std.testing.allocator;
- var queue = PDQ.init({});
+ var queue: PDQ = .empty;
defer queue.deinit(gpa);
try queue.push(gpa, 3);
@@ -873,7 +881,7 @@ test "pop at index" {
test "iterator while empty" {
const gpa = std.testing.allocator;
- var queue = PDQ.init({});
+ var queue: PDQ = .empty;
defer queue.deinit(gpa);
var it = queue.iterator();
@@ -884,7 +892,7 @@ test "iterator while empty" {
test "shrinkAndFree" {
const gpa = std.testing.allocator;
- var queue = PDQ.init({});
+ var queue: PDQ = .empty;
defer queue.deinit(gpa);
try queue.ensureTotalCapacity(gpa, 4);
@@ -1031,7 +1039,7 @@ test "push and pop" {
const context = [_]u32{ 5, 3, 4, 2, 2, 8, 0 };
- var queue = CPDQ.init(context[0..]);
+ var queue: CPDQ = .initContext(context[0..]);
defer queue.deinit(gpa);
try queue.push(gpa, 0);
@@ -1060,7 +1068,7 @@ test "don't compare a value to a copy of itself" {
all_cmps_unique = all_cmps_unique and (a != b);
return std.math.order(a, b);
}
- }.uniqueLessThan).init({});
+ }.uniqueLessThan).initContext({});
defer depq.deinit(gpa);
try depq.push(gpa, 1);