Ограничения CXX
Самая полезная страница при использовании CXX — справочник по типам.
CXX по сути подходит для случаев, когда:
- Интерфейс между Rust и C++ достаточно прост, и его можно полностью описать.
- Вы используете только типы, которые CXX уже поддерживает нативно, например
std::unique_ptr,std::string,&[u8]и т. д.
У него много ограничений — например, нет поддержки типа Option из Rust.
Эти ограничения вынуждают использовать Rust в Chromium только для хорошо изолированных «листовых узлов», а не для произвольного взаимодействия Rust и C++. При рассмотрении применения Rust в Chromium хорошей отправной точкой будет набросать привязки 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++ (показано на следующем слайде)
- Указатели на функции неудобны в использовании.