Zig chunk slice into fixed-size batches

Zig
const std = @import("std");

fn chunkSlice(comptime T: type, items: []const T, size: usize, out: [][]const T) usize {
    std.debug.assert(size > 0);
    var count: usize = 0;
    var i: usize = 0;
    while (i < items.len and count < out.len) : (i += size) {
        out[count] = items[i..@min(i + size, items.len)];
        count += 1;
    }
    return count;
}

pub fn main() void {
    const nums = [_]u32{ 1, 2, 3, 4, 5, 6, 7 };
    var out: [4][]const u32 = undefined;
    const count = chunkSlice(u32, &nums, 3, &out);
    for (out[0..count]) |batch| std.debug.print("{any}\n", .{batch});
}