Skip to content

Instantly share code, notes, and snippets.

@ar90n
Last active July 16, 2023 10:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ar90n/6e7aee9f4a1fe2106b2522897ac52091 to your computer and use it in GitHub Desktop.
Save ar90n/6e7aee9f4a1fe2106b2522897ac52091 to your computer and use it in GitHub Desktop.
return value is copied

戻り値はコピーされるので注意が必要

以下のように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));
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment