Макрос chromium::import!

Після додавання :my_rust_lib до GN deps нам все ще потрібно навчитися імпортувати та використовувати my_rust_lib з my_rust_lib_unittest.rs. Ми не надали явного crate_name для my_rust_lib, тому його ім'я буде обчислено на основі повного шляху та імені. На щастя, ми можемо уникнути роботи з такою громіздкою назвою за допомогою макросу chromium::import! з автоматично імпортованого крейту chromium:

chromium::import! {
    "//ui/base:my_rust_lib";
}

use my_rust_lib::my_function_under_test;

Під ковдрою макрос розширюється до чогось схожого на це:

extern crate ui_sbase_cmy_urust_ulib as my_rust_lib;

use my_rust_lib::my_function_under_test;

Додаткову інформацію можна знайти у коментарі документації макросу chromium::import.

Бібліотека rust_static_library підтримує вказівку явної назви через властивість crate_name, але робити це не рекомендується. Не рекомендується, тому що ім'я крейту має бути глобально унікальним. crates.io гарантує унікальність імен своїх крейтів, тому GN цілі cargo_crate (створені за допомогою інструменту gnrt, описаного в наступному розділі) використовують короткі імена крейтів.