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.