CXX 的局限性

By far the most useful page when using CXX is the type reference.

CXX 基本适用于以下情况:

  • 您的 Rust-C++ 接口非常简单,可以声明其中的全部内容。
  • 目前,您只使用了 CXX 提供原生支持的类型,例如 std::unique_ptrstd::string&[u8] 等。

这样具有很多局限性,例如缺少对 Rust 的 Option 类型的支持。

由于这些局限,我们在 Chromium 中只能将 Rust 用于隔离紧密的 “叶节点”,而无法用于任意的 Rust-C++ 互操作。当您打算在 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++ 异常来进行错误处理(下一张幻灯片中将加以介绍)
  • 函数指针使用起来很不方便。