fn clear(self: @This(), alloc: std.mem.Allocator) @This() {
switch (self) {
.Str => |s| alloc.free(s),
.Arr => |a| {
for (a) |v| {
_ = v.clear(alloc);
}
alloc.free(a);
},
.Map => |m| {
var it = m.iterator();
while (it.next()) |kv| {
alloc.free(kv.key_ptr.*);
_ = kv.value_ptr.*.clear(alloc);
}
(&m).deinit(); // <-- HERE
},
else => {},
}
return .{ .Int = 0 };
}
In a recursive structure I'm trying to make sure all memory is cleared safely,
I'm being told that &m is *const array_hash_map, but I want it to be mut.
How can I fix this?