5.1 Unsafe 代码
01-Unsafe 代码 — Comprehensive Rust
1分钟内可阅读完
译文 · 基于 Comprehensive Rust
原文链接: https://google.github.io/comprehensive-rust/chromium/build-rules.html
Rust 代码通常用 cargo 构建。Chromium 为了效率使用 gn 与 ninja——其静态规则允许最大并行度。Rust 也不例外。
在某个现有的 Chromium BUILD.gn 文件中,声明一个 rust_static_library:
import("//build/rust/rust_static_library.gni")
rust_static_library("my_rust_lib") {
crate_root = "lib.rs"
sources = [ "lib.rs" ]
}
你也可以添加对其他 Rust 目标的 deps。稍后我们将用它来依赖第三方代码。
你必须_同时_指定 crate 根与完整的源文件列表。
crate_root是交给 Rust 编译器、表示编译单元根文件的文件——通常是lib.rs。sources是ninja为确定何时需要重建所需的全部源文件完整列表。(不存在 Rust
source_set,因为在 Rust 中,整个 crate 就是一个编译单元。static_library是最小单元。)学员可能想知道为何我们需要一个 gn 模板,而不是使用 gn 对 Rust 静态库的内置支持。答案是该模板提供对 CXX 互操作、Rust features 与单元测试的支持,其中一些我们稍后会用到。
01-Unsafe 代码 — Comprehensive Rust
02-从 Chromium C++ 依赖 Rust 代码 — Comprehensive Rust
03-Visual Studio Code — Comprehensive Rust
04-练习 — Comprehensive Rust