Unsafe Rustとは?

Unsafe Rustとは?

通常Rustはコンパイル時にメモリ安全性が保証される。しかし、実はRustにはメモリ安全性を保証しない第二の言語が隠れている。それがUnsafe Rustだ。

Unsafe Rustがなぜ必要か?

Unsafe Rustが存在するのは、静的解析が本質的に保守的であるためです。こうしたコンパイラは、コードが保証を守っているかどうかを判断しようとするとき、無効なプログラムを受け入れるぐらいなら、有効なプログラムを拒否した方が良いと考えます。コードが正常であっても、Rustコンパイラが確信を持てるだけの情報を持っていなければ、そのコードは拒否されます。このような場合、安全でないコードを使用して、コンパイラに "私を信じてください、私は何をやっているか分かっています" と伝えることができます。デメリットは、自己責任で使用する必要があることです。安全でないコードを間違って使用すると、ヌルポインタの再参照など、メモリの非安全性による問題が発生する可能性があります。