CXXにおけるエラー処理
CXX の Result<T,E> のサポート は、C++ 例外に依存しているため、Chromium では使用できません。以下の代替手段があります。
-
Result<T, E>のTの部分:- out パラメータを介して返すことができます(例:
&mut T)。そのためには、Tを FFI の境界を越えて渡せる必要があります。たとえば、Tには以下を指定する必要があります。- プリミティブ型(
u32、usizeなど) - (
Box<T>とは異なり)適切なデフォルト値を持つcxxでネイティブにサポートされている型(UniquePtr<T>など)。
- プリミティブ型(
- Rust 側で保持し、参照を介して公開できます。これは、
Tが Rust 型の場合に必要になることがあります。Rust 型は FFI の境界を超えて渡すことができず、UniquePtr<T>に格納することもできません。
- out パラメータを介して返すことができます(例:
-
Result<T, E>のEの部分:- ブール値として返すことができます(たとえば、
trueは成功、falseは失敗を表します)。 - 理論上はエラーの詳細を保持できますが、これまでは実際に必要になることはありませんでした。
- ブール値として返すことができます(たとえば、