Правила побудови
Система збірки Android (Soong) підтримує Rust за допомогою кількох модулів:
| Тип модуля | Опис | 
|---|---|
rust_binary | Створює бінарний файл Rust. | 
rust_library | Створює бібліотеку Rust і надає варіанти rlib та dylib. | 
rust_ffi | Створює бібліотеку Rust C, яку використовують модулі cc, і надає як статичні, так і спільні варіанти. | 
rust_proc_macro | Створює бібліотеку proc-macro Rust. Вони аналогічні плагінам компілятора. | 
rust_test | Створює бінарний файл тесту Rust, який використовує стандартну систему тестування Rust. | 
rust_fuzz | Створює бінарний файл Rust fuzz, використовуючи libfuzzer. | 
rust_protobuf | Генерує вихідний код і створює бібліотеку Rust, яка надає інтерфейс для певного protobuf. | 
rust_bindgen | Генерує вихідний код і створює бібліотеку Rust, яка містить прив’язки Rust до бібліотек C. | 
Далі ми розглянемо rust_binary і rust_library.
Спікер може згадати додаткові деталі:
- 
Cargo не оптимізований для багатомовних репозиторіїв, а також завантажує пакети з інтернету.
 - 
Для сумісності та продуктивності, Android повинен мати крейти в межах дерева. Він також повинен взаємодіяти з кодом C/C++/Java. Soong заповнює цю прогалину.
 - 
Soong має багато спільного з Bazel, який є варіантом Blaze з відкритим вихідним кодом (використовується в google3).
 - 
Цікавий факт: Дані із “Зоряного шляху” - це Android типу Soong