Unsafe Rust の定義
「Unsafe Rust は Safe Rust のスーパーセットです。」
「Unsafe Rust では、生ポインタをデリファレンスしたり、誤って呼び出すと Rust の安全性保証を破る可能性がある関数を呼び出したりできるなど、追加の機能が 加わります。」
「これらの追加機能は、unsafe 操作 と呼ばれます。」
「unsafe 操作は、Rust 標準ライブラリが成り立つ基盤を提供します。たとえば、 生ポインタをデリファレンスする機能がなければ、Vec や Box を実装する ことは不可能です。」
「Unsafe Rust を書いている間も、コンパイラは引き続き支援してくれます。借用 チェックと型安全性は依然として適用されます。unsafe 操作には独自のルールが あり、このクラスでそれを学びます。」
Rust Reference にある unsafe 操作(ここにあまり時間をかけすぎないでください):
次の言語レベルの機能は、Rust の安全なサブセットでは使用できません:
- 生ポインタをデリファレンスすること。
- 可変または unsafe な外部 static 変数を読み書きすること。
- 代入する場合を除き、union のフィールドにアクセスすること。
unsafe関数を呼び出すこと。- 同じ機能を有効にする
<target_feature>属性を持たない関数から、<target_feature>が付いた安全な関数を呼び出すこと。- unsafe trait を実装すること。
- extern ブロックを宣言すること。
- 項目に unsafe 属性を適用すること。