CXX のエラーハンドリング
CXX の Result<T,E> のサポート は C++ 例外に依存しているため、Chromium ではこれを使用できません。代替案は次のとおりです。
-
Result<T, E>のTの部分は、次のようにできます。- 出力パラメータ経由で返す(例:
&mut T経由)。これには、Tが FFI 境界を越えて渡せることが必要です。たとえば、Tは次のいずれかである必要があります。- プリミティブ型(
u32やusizeなど) cxxがネイティブにサポートする型(UniquePtr<T>など)で、失敗時に使用できる適切なデフォルト値を持つもの(Box<T>とは 異なり)
- プリミティブ型(
- Rust 側に保持し、参照経由で公開する。これは、
Tが Rust の型で、FFI 境界を越えて渡せず、UniquePtr<T>に格納することもできない場合に必要になることがあります。
- 出力パラメータ経由で返す(例:
-
Result<T, E>のEの部分は、次のようにできます。- 真偽値として返す(例:
trueは成功を表し、falseは失敗を表す) - エラーの詳細を保持することは理論上可能ですが、これまでのところ実際には必要になっていません。
- 真偽値として返す(例: