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

标签 rust rust-cargo crate rust-crates

作为 Rust 驱动程序 crate 开发人员,我想在任何其他 Rust 程序使用我的 crate 安装/下载期间执行以下步骤:

  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设置环境变量

重要提示

大多数 Rust 用户并不期望构建脚本会出现这种行为。该方法可能存在许多问题。只有少数来 self 的头顶:

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

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

关于rust - 我们可以在箱子安装期间下载一些东西并设置环境变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65302315/

相关文章:

rust - 为什么在使用 Iterator::collect 时得到 "type annotations needed"?

循环中的 Rust 生命周期问题

assembly - 如何从 Cargo 构建中获取 assembly 输出?

unit-testing - 当两个字符串不相等时,assert_eq 宏是否可能显示差异?

mysql - Crate DB 中的复杂查询可能吗?

audio - 如何使用Bevy加载文件夹中的所有音频文件?

curl - 使用 curl 向 Actix 服务器发送 POST 请求失败,返回 "400 Bad Request"

error-handling - 我需要帮助重构 Rust 中的错误处理

java - crate 常见爬行示例不起作用

elasticsearch - Elasticsearch创建数据兼容性?