构建
Rust 项目应使用以下 4 个 GN 目标模板:
rustc_library
定义了库和(可选) 单元测试目标。其他目标可以依赖于此库。rustc_binary
定义可执行文件和可选的 单元测试目标。rustc_test
定义了仅用于测试的目标。rustc_macro
定义了 过程宏目标。
examples/rust 目录提供了一些 Rust 示例 使用这些目标的软件包,Rust FIDL 示例也是如此。
Cargo.toml
Fuchsia Rust 目标不是使用 cargo 构建的。也就是说, 生成 Cargo.toml 文件以用于外部工具。这个 也不能保证它们都能正常运行。
自动生成的文档
有了作为目标的 Cargo.toml 后,您就可以生成并浏览 HTML 提供有关目标及其依赖项的文档:
fx rustdoc path/from/fuchsia/root/to/target:label --open
测试
您可以使用 fx
和 fx 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 rustfmt
或 fx format-code
。我们主要使用 rustfmt 默认值,
进行了一些自定义设置。
Rust 惯用用法回顾
如果您刚开始接触 Rust,或者希望有人查看您的更改, 验证你是否以惯用方式使用 Rust,请添加“Fuchsia Rust Reviewers” 为 Gerrit 中的 CL 的审核员,并分配一名审核员。
如有任何问题,请发送电子邮件至 tq-rust-reviewers@google.com。
通信通道
通过 rust-users@fuchsia.dev 邮寄名单进行公开讨论。