Limitações do CXX
De longe, a página mais útil ao usar o CXX é a referência de tipo.
CXX fundamentalmente é adequado para casos em que:
- Sua interface Rust-C++ é suficientemente simples para que você possa declarar tudo.
- Você está usando apenas os tipos já suportados nativamente pelo CXX, por exemplo,
std::unique_ptr
,std::string
,&[u8]
etc.
Ele tem muitas limitações --- por exemplo, falta de suporte para o tipo Option
do Rust.
Essas limitações nos restringem a usar o Rust no Chromium apenas para "leaf nodes" ("nós folha") bem isolados, em vez de para interoperabilidade Rust-C++ arbitrária. Ao considerar um caso de uso para o Rust no Chromium, um bom ponto de partida é elaborar os bindings CXX para a fronteira entre as linguagens para ver se ela parece simples o suficiente.
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.
Você também deve discutir alguns dos outros pontos problemáticos com o CXX, por exemplo:
- Seu tratamento de erros é baseado em exceções C++ (dado no próximo slide)
- Ponteiros de função são difíceis de usar.