Unsafe Rust
Rust 言語は 2 つの部分で構成されています。
- 安全な Rust: メモリセーフで、未定義の動作は起こりえません。
- アンセーフRust: 前提条件に違反した場合、未定義の動作がトリガーされる可能性があります。
このコースでは主に安全な Rust を見てきましたが、安全でない Rust とは何かを理解しておくことが重要です。
アンセーフなコードは通常、小規模で分離されており、その正確性は慎重に文書化されている必要があります。通常は安全な抽象化レイヤでラップされています。
アンセーフRustでは、次の 5 つの新機能を利用できます。
- 生ポインタの参照外し。
- 可変の静的変数へのアクセスまたは変更。
union
フィールドへのアクセス。extern
関数を含むunsafe
関数の呼び出し。unsafe
トレイトの実装。
次に、安全でない機能について簡単に説明します。詳しくは、Rust Book の第 19.1 章と、Rustonomicon をご覧ください。
This slide should take about 5 minutes.
アンセーフRustは、コードが正しくないことを意味するものではありません。デベロッパーが一部のコンパイラ安全性機能をオフにし、自分で正しいコードを記述しなければならないことを意味します。また、コンパイラがRustのメモリ安全性に関するルールを強制しなくなるということを意味します。