chromium::import! マクロ
GN の deps に :my_rust_lib を追加した後も、my_rust_lib_unittest.rs から my_rust_lib をインポートして使用する方法を理解する必要があります。my_rust_lib には明示的な crate_name を指定していないため、その crate 名は完全なターゲットパスと名前に基づいて計算されます。幸い、自動的にインポートされる chromium crate の chromium::import! マクロを使えば、このような扱いにくい名前を直接扱わずに済みます。
// 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 プロパティを使って明示的な名前を指定できますが、これを行うことは推奨されません。これは、crate 名がグローバルに一意でなければならないためです。crates.io は crate 名の一意性を保証しているため、cargo_crate GN ターゲット(後のセクションで扱う gnrt ツールによって生成されます)では短い crate 名が使われます。