Unsafe Rust の定義

SafeRustUnsafeRust

「Unsafe Rust は Safe Rust のスーパーセットです。」

「Unsafe Rust では、生ポインタをデリファレンスしたり、誤って呼び出すと Rust の安全性保証を破る可能性がある関数を呼び出したりできるなど、追加の機能が 加わります。」

「これらの追加機能は、unsafe 操作 と呼ばれます。」

「unsafe 操作は、Rust 標準ライブラリが成り立つ基盤を提供します。たとえば、 生ポインタをデリファレンスする機能がなければ、VecBox を実装する ことは不可能です。」

「Unsafe Rust を書いている間も、コンパイラは引き続き支援してくれます。借用 チェックと型安全性は依然として適用されます。unsafe 操作には独自のルールが あり、このクラスでそれを学びます。」

Rust Reference にある unsafe 操作(ここにあまり時間をかけすぎないでください):

次の言語レベルの機能は、Rust の安全なサブセットでは使用できません:

  • 生ポインタをデリファレンスすること。
  • 可変または unsafe な外部 static 変数を読み書きすること。
  • 代入する場合を除き、union のフィールドにアクセスすること。
  • unsafe 関数を呼び出すこと。
  • 同じ機能を有効にする <target_feature> 属性を持たない関数から、 <target_feature> が付いた安全な関数を呼び出すこと。
  • unsafe trait を実装すること。
  • extern ブロックを宣言すること。
  • 項目に unsafe 属性を適用すること。