以下のようにgen
の戻り値はコピーされた値となる。
従って、St
の中でフィールドに対するポインタやスライスと持っているとバグとなる。
const St = struct { addr: usize };
fn gen() St {
var s = St{ .addr = 0 };
s.addr = @intFromPtr(&s);
return s;
}
test "ret" {
var r = gen();
try std.testing.expect(r.addr != @intFromPtr(&r));
}