24 lines
610 B
Zig
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});
|
|
}
|