CXX の制限事項
CXX を使用する際に圧倒的に最も役立つページは、型リファレンス です。
CXX が本質的に適しているのは、次のようなケースです。
- Rust-C++ インターフェースが十分に単純で、そのすべてを宣言できる場合。
- CXX がすでにネイティブにサポートしている型だけを使っている場合。たとえば
std::unique_ptr、std::string、&[u8]などです。
これには多くの制限があります。たとえば、Rust の Option 型がサポートされていません。
これらの制限により、Chromium では Rust を任意の Rust-C++ 相互運用のため に使うのではなく、十分に分離された 「リーフノード」に対してのみ使用することになります。Chromium で Rust の ユースケースを検討する際のよい出発点は、言語境界に対する CXX バインディングを下書きし、それが十分に単純に見えるかどうかを確かめること です。
さらに現時点では、コンポーネントビルドにおけるリンクの詳細のため、ある
コンポーネント内の Rust コードは別のコンポーネント内の Rust
コードに依存できません。これも、Rust の使用をリーフノードに制限する
もう 1 つの理由です。
また、CXX に関する他の厄介な点についても議論すべきです。たとえば:
- そのエラーハンドリングは C++ 例外に基づいています(次のスライドで説明します)
- 関数ポインタは扱いづらいです。