CXX の制限事項

CXX を使用する際に圧倒的に最も役立つページは、型リファレンス です。

CXX が本質的に適しているのは、次のようなケースです。

  • Rust-C++ インターフェースが十分に単純で、そのすべてを宣言できる場合。
  • CXX がすでにネイティブにサポートしている型だけを使っている場合。たとえば std::unique_ptrstd::string&[u8] などです。

これには多くの制限があります。たとえば、Rust の Option 型がサポートされていません。

これらの制限により、Chromium では Rust を任意の Rust-C++ 相互運用のため に使うのではなく、十分に分離された 「リーフノード」に対してのみ使用することになります。Chromium で Rust の ユースケースを検討する際のよい出発点は、言語境界に対する CXX バインディングを下書きし、それが十分に単純に見えるかどうかを確かめること です。

さらに現時点では、コンポーネントビルドにおけるリンクの詳細のため、ある コンポーネント内の Rust コードは別のコンポーネント内の Rust コードに依存できません。これも、Rust の使用をリーフノードに制限する もう 1 つの理由です。

また、CXX に関する他の厄介な点についても議論すべきです。たとえば:

  • そのエラーハンドリングは C++ 例外に基づいています(次のスライドで説明します)
  • 関数ポインタは扱いづらいです。