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 ツールで生成)は短いクレート名を使用します。