我们可以在箱子安装期间下载一些东西并设置环境变量吗?

Can we download something & set environment variable during crate installation?

作为 Rust 驱动程序 crate 开发人员,我想在我的 crate installation/download 被任何其他 Rust 程序使用时执行以下步骤:

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

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

您可以使用 Build script 来实现(但这不是您应该做的,请参阅下面的注释)。

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

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

重要提示

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

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

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