我们可以在crate安装过程中下载一些东西并设置环境变量吗?

问题描述 投票:0回答:1

作为 Rust 驱动程序箱开发人员,当任何其他 Rust 程序使用我的箱时,我希望在安装/下载过程中执行以下步骤:

  1. 检查平台,即 Windows 或 UNIX 或 macOS。
  2. 从外部网站下载相应的特定于平台的二进制文件。
  3. 设置指向下载位置的环境变量。

我知道这在 Node、Python 或 R 中是可能的,但不确定这在 Rust 中是否可能。

rust rust-cargo rust-crates
1个回答
3
投票

您可以使用构建脚本来实现这一点(但这不是您应该做的,请参阅下面的注释)。

该脚本将在 Cargo 开始构建您的库之前编译并执行。

  1. 在脚本中您可以使用 cfg 属性来检查平台。
  2. 有很多库可以通过 HTTP 下载一些东西,例如 reqwest
  3. 您可以通过 cargo:rustc-env=VAR=VALUE
  4. 设置环境变量

重要提示

大多数 Rust 用户并不期望构建脚本出现这种行为。该方法可能存在许多问题。我脑海中只有其中几个:

  • 首先可能存在安全问题。
  • 该方法将破坏客户端的构建。

我相信最好将您需要的所有二进制文件作为板条箱的一部分上传。您可以使用 include_bytes! 为此。

© www.soinside.com 2019 - 2024. All rights reserved.