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のメモリ安全性に関するルールを強制しなくなるということを意味します。