FIDL Rust Crates

FIDL 是在 Fuchsia 中实现结构化 IPC 的基本机制。从 Rust 使用 FIDL 最简便的途径是从一个 FIDL 库生成一个 “FIDL crate”,然后从你的 Rust 库或二进制应用中导入它。

查看 FIDL Rust 绑定 以理解不同的 FIDL 构造如何映射到它们的 Rust 等价物,以及从 FIDL Rust 教程 获取使用 Rust 绑定的示例。

构建指南 {#build}

当一个 GN fidl 规则 被定义给一个 FIDL 库,就会相应地自动生成一个 FIDL Rust crate,名称为原始目标名称加上 -rustc。其它 FIDL 库的传递依赖会自动解析。 例如,给定以下声明:

  1. # //src/tictactoe/BUILD.gn
  2. fidl("games.tictactoe") { ... }

得到的 FIDL crate 目标为 //src/tictactoe:games.tictactoe-rustc。要使用这个 FIDL crate, 在你的 Rust crate 里,把目标添加到 rustc_* 构建规则deps 域中。例如:

  1. rustc_binary("tictactoe") {
  2. # ...
  3. deps = ["//src/tictactoe:games.tictactoe-rustc"]
  4. }

这个 Rust crate 将被命名为 fidl_games_tictactoe,它的组件现在可以被导入:

  1. use fidl_games_tictactoe::BOARD_SIZE;

在 Fuchsia 树中,频繁使用的 FIDL crates 经常别名为更短的名称以达到简洁的目的,就像这样:

  1. use fidl_fuchsia_io2 as fio2;
  2. use fidl_fuchsia_data as fdata;

生成文档 {#documentation}

一个 FIDL crate 的 HTML 格式文档可以使用 fx rustdoc 命令自动生成。例如:

  1. fx rustdoc //src/tictactoe:games.tictactoe-rustc --open

在公开的 Fuchsia 源码树中, FIDL crates 都发布在 Fuchsia Rust API 参考中。

生成 Rust 代码 {#code}

要手动检查给一个 FIDL crate 生成的 Rust 代码,可以在 BUILD_DIR/fidling/gen 目录下找到相关的 Rust 源代码(参考 代码生成指南 获取示例)。要注意必须先构建相应的 FIDL crate (例如,使用 fx build)。