はじめに
#NO IMAGEThe Rust Programming Language 日本語版 - The Rust Programming Language 日本語版
を読んでいる
お勉強
#NO IMAGEUnsafe Rust - The Rust Programming Language 日本語版
- やるか
unsafeつまらないな- 理解できないというかずっと机上の話だからだな
- 思考も散漫しているので頭が疲れてるな
- ちょっと集中しないとー
- 勉強方法も飽きてきたんだよな
メモ
#グローバル変数をRustは確かにサポートしていますが、 Rustの所有権規則で問題になることもあります。
- そうだよね
- Rustってスコープにシャドーイングしないからグローバル変数出てきたらぶっ壊れるよな
定数と不変で静的な変数は、類似して見える可能性がありますが、微妙な差異は、静的変数の値は固定されたメモリアドレスになることです。値を使用すると、常に同じデータにアクセスします。
- ほー
constはそのままbuildされたときに固定の値になるもんな- これは格納アドレスが一緒ということか
static mut COUNTER: u32 = 0;
fn add_to_count(inc: u32) {
unsafe {
COUNTER += inc;
}
}
fn main() {
add_to_count(3);
unsafe {
println!("COUNTER: {}", COUNTER);
}
}
- まぁこのレベルだったら全然ほかの実装でいいよな
- stateだし、外出しするのも良さそう
unsafeでのみ動く最後の行動は、unsafeなトレイトを実装することです。
-
unsafeなtrait。。。? -
あー勝手に実装されてもチェック無視されるのか
- 本来なら明示的に記述する必要があると
- なるほどなー
unsafeを使って議論したばかりの4つの行動(強大な力)のうちの1つを行うのは間違っていたり、認められさえもしないものではありません。ですが、unsafeコードを正しくするのは、より巧妙なことでしょう。コンパイラがメモリ安全性を保持する手助けをできないからです。unsafeコードを使用する理由があるなら、そうすることができ、明示的にunsafe注釈をすることで問題が起きたら、その原因を追求するのが容易になります。
- ぜんぜんいつ使うかの議論してないんだけどw
まとめ
#unsafe使いたくないな- にっちもさっちも行かなくなった場合の最終手段な気がするわ
- 次は高度なトレイト