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.