Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

unsafe性を小さなモジュールに閉じ込める

説明

unsafe コードがある場合は、その unsafe性の上に最小限の安全なインターフェイスを構築するために必要な不変条件を維持できる、可能な限り小さなモジュールを作成します。これを、安全なコードのみを含み、使いやすいインターフェイスを提供する、より大きなモジュールに埋め込みます。外側のモジュールには、unsafe コードを直接呼び出す unsafe 関数やメソッドを含めることができる点に注意してください。ユーザーはこれを使用して速度上の利点を得られます。

利点

  • 監査が必要な unsafe コードを限定できる
  • 内側のモジュールの保証を頼りにできるため、外側のモジュールを書くのがはるかに簡単になる

欠点

  • 適切なインターフェイスを見つけるのが難しい場合があります。
  • 抽象化によって非効率が生じる可能性があります。

  • toolshed クレートは、その unsafe な操作をサブモジュールに含め、ユーザーに安全なインターフェイスを提供します。
  • stdString クラスは、内容が有効な UTF-8 でなければならないという不変条件が追加された、Vec<u8> のラッパーです。String に対する操作は、この振る舞いを保証します。ただし、ユーザーには unsafe メソッドを使用して String を作成する選択肢があり、その場合、内容の妥当性を保証する責任はユーザーにあります。

関連項目