CXX のエラーハンドリング

CXX の Result<T,E> のサポート は C++ 例外に依存しているため、Chromium ではこれを使用できません。代替案は次のとおりです。

  • Result<T, E>T の部分は、次のようにできます。

    • 出力パラメータ経由で返す(例: &mut T 経由)。これには、T が FFI 境界を越えて渡せることが必要です。たとえば、T は次のいずれかである必要があります。
      • プリミティブ型(u32usize など)
      • cxx がネイティブにサポートする型(UniquePtr<T> など)で、失敗時に使用できる適切なデフォルト値を持つもの(Box<T> とは 異なり
    • Rust 側に保持し、参照経由で公開する。これは、T が Rust の型で、FFI 境界を越えて渡せず、UniquePtr<T> に格納することもできない場合に必要になることがあります。
  • Result<T, E>E の部分は、次のようにできます。

    • 真偽値として返す(例: true は成功を表し、false は失敗を表す)
    • エラーの詳細を保持することは理論上可能ですが、これまでのところ実際には必要になっていません。