exercism/zig/difference-of-squares/box.zig
2024-07-28 17:45:02 -04:00

24 lines
610 B
Zig

const print = @import("std").debug.print;
const SomeStruct = struct { inner: ?usize = null };
pub fn Box(comptime T: type) type {
return struct {
inner: ?*T,
fn drop(self: *Box(T)) void {
self.inner.?.* = SomeStruct{ .inner = 1000 };
}
};
}
pub fn main() void {
var s = SomeStruct{};
var box = Box(SomeStruct){ .inner = &s };
s.inner = 100;
print("{any}\n", .{box.inner == &s});
print("{any}\n", .{box.inner.?.inner});
box.drop();
print("{any}\n", .{box.inner == &s});
print("{any}\n", .{box.inner});
print("{any}\n", .{s});
}