chromium::import! マクロ
GN の deps に :my_rust_lib を追加した後も、my_rust_lib_unittest.rs から my_rust_lib をインポートして使用する方法について学ぶ必要があります。my_rust_lib には明示的な crate_name が指定されていないため、クレート名はターゲットのフルパスと名前に基づいて生成されます。幸い、自動的にインポートされる chromium クレートから chromium::import! マクロを使用すれば、このような扱いにくい名前の使用を回避できます。
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 はクレート名の一意性を保証しているため、cargo_crate GN ターゲット(後述の gnrt ツールで生成)は短いクレート名を使用します。