Why Nostr? What is Njump?
2024-03-18 09:32:55

ウィズコロナ on Nostr: Rustで struct A { i: i32 } fn main() { let mut a = A { i: 0 }; let ptr = &mut a as ...

Rustで
struct A { i: i32 }

fn main() {
let mut a = A { i: 0 };
let ptr = &mut a as *mut A;

let ai = &a.i;
unsafe {
(*ptr).i = 10;
}

print!("{} {}", a.i, ai);
}
とするとリリースビルドでも10 10が出力されるんだけど、Rustはimmutable borrowを証拠にした参照の最適化はしないと思っていいのかな(ナイーブにはaiがimmutable borrowであることを利用して*aiを0に置き換えるような最適化が起きてもおかしくない気がする)
Author Public Key
npub1f0skxhpq09m9sm5ch5rzj3uetju89xrh84gxurp0qzsgncwk29as2yrade