CXXにおけるエラー処理

CXX の Result<T,E> のサポート は、C++ 例外に依存しているため、Chromium では使用できません。以下の代替手段があります。

  • Result<T, E>T の部分:

    • out パラメータを介して返すことができます(例: &mut T)。そのためには、T を FFI の境界を越えて渡せる必要があります。たとえば、T には以下を指定する必要があります。
      • プリミティブ型(u32usize など)
      • (Box<T> とは異なり)適切なデフォルト値を持つcxx でネイティブにサポートされている型(UniquePtr<T> など)。
    • Rust 側で保持し、参照を介して公開できます。これは、T が Rust 型の場合に必要になることがあります。Rust 型は FFI の境界を超えて渡すことができず、UniquePtr<T> に格納することもできません。
  • Result<T, E>E の部分:

    • ブール値として返すことができます(たとえば、true は成功、false は失敗を表します)。
    • 理論上はエラーの詳細を保持できますが、これまでは実際に必要になることはありませんでした。