FIDL 是 Fuchsia 中结构化 IPC 的主要机制。若要从 Rust 使用 FIDL,最简单的方法是从 FIDL 库生成“FIDL crate”,然后从 Rust 库或二进制文件导入它。
请参阅 FIDL Rust 绑定,了解不同的 FIDL 结构如何映射到其 Rust 等效项;有关使用 Rust 绑定的示例,请参阅 FIDL Rust 教程。
制作说明
如果为 FIDL 库定义了 GN fidl
规则,则系统会在原始目标名称下自动生成相应的 FIDL Rust crate,并附加 _rust
。系统会自动解析对其他 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
命令为 FIDL crate 自动生成 HTML 格式的文档。例如:
fx rustdoc //src/tictactoe:games.tictactoe_rust --open
Fuchsia Rust API 参考文档中发布了公开 Fuchsia 源代码树中的 FIDL crate。
生成的 Rust 代码
如需手动检查为 FIDL crate 生成的 Rust 代码,可使用 BUILD_DIR/fidling/gen
下的 Rust 源文件(有关示例,请参阅生成的代码指南)。请注意,必须先构建 FIDL crate(例如使用 fx build
)。