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
は失敗を表します)。 - 理論上はエラーの詳細を保持できますが、これまでは実際に必要になることはありませんでした。
- ブール値として返すことができます(たとえば、