FIDL 是 Fuchsia 中结构化 IPC 的主要机制。从 Rust 使用 FIDL 的最简单方法是从 FIDL 库生成“FIDL crate”,然后从 Rust 库或二进制文件中导入该 crate。
请参阅 FIDL Rust 绑定,了解不同的 FIDL 结构如何映射到其 Rust 等效项,并参阅 FIDL Rust 教程,获取有关使用 Rust 绑定的示例。
构建说明
为 FIDL 库定义 GN fidl 规则后,系统会自动在原始目标名称后附加 _rust,生成相应的 FIDL Rust crate。对其他 FIDL 库的传递依赖项会自动解析。
例如,假设有以下声明:
# //src/tictactoe/BUILD.gn
fidl("games.tictactoe") { ... }
FIDL crate 目标为 //src/tictactoe:games.tictactoe_rust。如需使用 FIDL crate,请将目标添加到 Rust crate 的 rustc_* build 规则的 deps 字段中。例如:
rustc_binary("tictactoe") {
# ...
deps = ["//src/tictactoe:games.tictactoe_rust"]
}
Rust crate 将命名为 fidl_games_tictactoe,其项现在可以导入:
use fidl_games_tictactoe::BOARD_SIZE;
在 Fuchsia 树中,常用的 FIDL crate 通常会别名为较短的名称,以实现简洁性,如下所示:
use fidl_fuchsia_io as fio;
use fidl_fuchsia_data as fdata;
生成的文档
使用 fx rustdoc-link 命令可以自动为 FIDL crate 生成 HTML 格式的文档。使用以下命令生成文档:
fx rustdoc-link //src/tictactoe:games.tictactoe_rust
使用浏览器打开 docs/rust/doc 目录(位于根 build 目录中)。如需了解详情,请参阅 fx rustdoc-link --help。
公开 Fuchsia 源代码树中的 FIDL crate 发布在 Fuchsia Rust API 参考文档中。
生成的 Rust 代码
如需手动检查 FIDL crate 的生成的 Rust 代码,可在 BUILD_DIR/fidling/gen 下找到 Rust 源文件(有关示例,请参阅生成的代码指南)。请注意,必须先构建 FIDL crate(例如,使用 fx build)。