健全な Rust の 3 つの形

  • Safe Rust のみで書かれた関数
  • 誤用が不可能な unsafe ブロックを含む関数
  • 安全性の事前条件が文書化された unsafe 関数
  • 私たちは健全なコードを書きたいと考えています。
  • 健全なコードが取りうる形は、次のものだけです。
    • unsafe ブロックを含まない安全な関数
    • unsafe ブロックを完全にカプセル化する安全な関数。つまり、呼び出し元がそれらについて知っている必要がないもの
    • unsafe ブロックを含むものの、それらをカプセル化せず、証明の責任を呼び出し元に渡す unsafe 関数
  • 証明責任
    • Safe Rust のみからなる安全な関数 -> コンパイラ
    • unsafe ブロックを含む安全な関数 -> 関数の作者
    • unsafe 関数 -> 関数の呼び出し元