第124章へようこそ。
第123章で、安全の境界を語りました。
Rustはunsafeというキーワードと型システムで、安全な領域と安全でない領域を分離する。
安全な領域では、コンパイラがメモリ安全とデータ競合の不在を保証する。
今日のテーマは「実行時の検査」です。コンパイラが手放したものを見ていきます。
Rustはコンパイル時に多くのことを保証する言語です。
所有権。借用。ライフタイム。型の整合性。スレッド安全性。
しかし、すべてをコンパイル時に保証しているわけではありません。
配列の範囲外アクセスは、実行時に検査される。
整数のゼロ除算は、実行時に検出される。
RefCellの借用規則違反は、実行時に発覚する。
Rustがあえてコンパイル時に保証しなかったものがある。
実行時の検査に委ねたものがある。
なぜ、すべてをコンパイル時に解決しなかったのか。
その判断には、明確な理由があります。