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});
}