CXXの限界
CXX を使用するときに最も役立つページは、型リファレンス です。
CXX は基本的に、次のようなケースに適しています。
- Rust-C++ インターフェースが十分にシンプルで、すべてを宣言できる場合。
- すでに CXX でネイティブにサポートされている型のみを使用している場合(例:
std::unique_ptr
、std::string
、&[u8]
)。
Rust の Option
型がサポートされていないなど、CXX には多くの制限があります。
こうした制限により、Chromium では 任意の Rust と C++ の相互運用は行われず、Rustの使用は十分に独立したコードに限定されています。Chromium での Rust のユースケースを検討する際は、まず、言語境界の CXX バインディングの下書きを作成して、シンプルに見えるかどうかを確認することをおすすめします。
In addition, right now, Rust code in one component cannot depend on Rust
code in another, due to linking details in our component build. That's another
reason to restrict Rust to use in leaf nodes.
また、CXX のその他の厄介な点を説明する必要があります。次に例を示します。
- エラー処理が C++ 例外に基づいて行われる(次のスライドを参照)。
- 関数ポインタが使いにくい。