Rust

构建

Rust 项目应使用以下 4 个 GN 目标模板:

examples/rust 目录提供了一些 Rust 示例 使用这些目标的软件包,Rust FIDL 示例也是如此。

另请参阅:使用自定义 Rust 工具链构建 Fuchsia

Cargo.toml

Fuchsia Rust 目标不是使用 cargo 构建的。也就是说, 生成 Cargo.toml 文件以用于外部工具。这个 也不能保证它们都能正常运行。

自动生成的文档

有了作为目标的 Cargo.toml 后,您就可以生成并浏览 HTML 提供有关目标及其依赖项的文档:

fx rustdoc path/from/fuchsia/root/to/target:label --open

测试

您可以使用 fxfx test {package name} 命令在已连接的设备上运行单元测试。如需了解相关信息,请参阅测试 Rust 代码 到这里就结束了

过程宏

过程宏目标在编译时在主机上执行。因此, 它们不能依赖于仅在设备端可用的其他 crate,例如 锆石。

阴性检测,例如并声明某个宏无法使用特定的 错误,目前不受支持。

警告和错误

默认情况下,我们的 build 配置会将所有 Rust 警告变成错误。此要求可以是 而在本地计算机上,则可能希望看到以警告形式显示的警告, 让 CQ 强制实施硬边界。

借助 deny_warnings GN 参数,您可以在开发环境中控制此行为。 在 fx args 中设置 deny_warnings = false 或将 --args=deny_warnings=false 添加到 您的 fx set 将允许您在本地进行开发,而不会受到警告的阻止。您可以 将该参数添加到结账页中的 local/args.gn,以便应用该参数 而无需每次在终端中输入代码。

样式

我们目前没有 Rust 的样式指南,但你应该运行 fx rustfmtfx format-code。我们主要使用 rustfmt 默认值, 进行了一些自定义设置

Rust 惯用用法回顾

如果您刚开始接触 Rust,或者希望有人查看您的更改, 验证你是否以惯用方式使用 Rust,请添加“Fuchsia Rust Reviewers” 为 Gerrit 中的 CL 的审核员,并分配一名审核员。

如有任何问题,请发送电子邮件至 tq-rust-reviewers@google.com。

通信通道

通过 rust-users@fuchsia.dev 邮寄名单进行公开讨论。

现有的 Fuchsia Rust 库

更进一步