Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Макрос chromium::import!

После добавления :my_rust_lib в deps GN нам всё ещё нужно научиться импортировать и использовать my_rust_lib из my_rust_lib_unittest.rs. Мы не задали явный crate_name для my_rust_lib, поэтому его имя крейта вычисляется на основе полного пути и имени цели. К счастью, можно не работать с таким громоздким именем, используя макрос chromium::import! из автоматически импортируемого крейта chromium:

// Copyright 2023 Google LLC
// SPDX-License-Identifier: Apache-2.0

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

use my_rust_lib::my_function_under_test;

Под капотом макрос раскрывается примерно так:

// Copyright 2023 Google LLC
// SPDX-License-Identifier: Apache-2.0

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, о котором речь пойдёт в следующем разделе) используют короткие имена крейтов.