From b368fe65bb45dc4414c9cc2dabc7d84fa7690c36 Mon Sep 17 00:00:00 2001 From: Mathias Magnusson Date: Tue, 29 Jul 2025 23:01:38 +0200 Subject: store local variables on the stack --- src/main.zig | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'src/main.zig') diff --git a/src/main.zig b/src/main.zig index 55b7e0e..d0e94db 100644 --- a/src/main.zig +++ b/src/main.zig @@ -74,15 +74,24 @@ fn HashMapFormatter(HashMap: type) type { options: std.fmt.FormatOptions, writer: anytype, ) !void { - _ = fmt; + const k_fmt, const v_fmt = comptime blk: { + var fmt_it = std.mem.splitScalar(u8, fmt, ','); + const k_fmt = fmt_it.next() orelse ""; + const v_fmt = fmt_it.next() orelse ""; + break :blk .{ k_fmt, v_fmt }; + }; _ = options; try writer.writeAll("{"); var it = hash_map.iterator(); var first = true; while (it.next()) |kv| { try writer.print( - "{s} {" ++ (if (@TypeOf(kv.key_ptr.*) == []const u8) "s" else "any") ++ "}: {any}", - .{ if (first) "" else ",", kv.key_ptr.*, kv.value_ptr.* }, + "{s} {" ++ k_fmt ++ "}: {" ++ v_fmt ++ "}", + .{ + if (first) "" else ",", + kv.key_ptr.*, + kv.value_ptr.*, + }, ); first = false; } -- cgit v1.2.3