FIDL Rust crate

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)。