Limitaciones de CXX

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

CXX se adapta básicamente a los casos en los que:

  • La interfaz de Rust-C++ es lo suficientemente sencilla como para se pueda declarar por completo.
  • Solo estás usando los tipos compatibles de forma nativa con CXX, como std::unique_ptr, std::string o &[u8], entre otros.

Tiene muchas limitaciones, por ejemplo, la falta de compatibilidad con el tipo Option de Rust.

Estas restricciones nos limitan a usar Rust en Chromium solo para "nodos hoja" muy aislados, en lugar de para la interoperabilidad arbitraria de Rust-C++. Si te planteas un caso práctico de Rust en Chromium, un buen punto de partida es hacer un borrador de los enlaces de CXX para el límite del lenguaje para ver si te parece lo suficientemente sencillo.

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.

También debes hablar de algunos de los otros aspectos delicados con CXX, como los siguientes:

  • Su gestión de errores se basa en las excepciones de C++ (como se muestra en la siguiente diapositiva).
  • Los punteros de función no son muy fáciles de usar.