【问题标题】:cargo run: can't find crate even though it's listed in Cargo.tomlcargo run:即使在 Cargo.toml 中列出也找不到 crate
【发布时间】:2020-10-25 02:25:36
【问题描述】:

我正在使用名为 build.rs 的 Rust 脚本进行代码生成(它不是 Cargo 构建脚本)。该脚本在顶部包含以下内容:

extern crate reqwest;

这是我的Cargo.toml 文件:

[package]
name = "my-script"
version = "0.1.0"
edition = "2018"

[[bin]]
path = "build.rs"
name = "builder"

[dependencies]
reqwest = { version = "0.10", features = ["blocking", "json"] }

当我执行cargo run 时,它给了我这个错误:

error[E0463]: can't find crate for `reqwest`
 --> build.rs:1:1
  |
1 | extern crate reqwest;
  | ^^^^^^^^^^^^^^^^^^^^^ can't find crate

如何让它能够找到reqwest crate?

【问题讨论】:

    标签: rust rust-cargo


    【解决方案1】:

    build.rsCargo build script 的默认名称,它在构建时运行以生成代码、链接 C 库等。

    由于 cargo 发现您的项目目录中有一个 build.rs,它假定它是一个构建脚本并尝试构建它。但是,构建脚本不使用正常的依赖项,而是使用来自Cargo.toml[build-dependencies] 部分的依赖项。由于您没有,reqwest crate 不适用于构建脚本。

    重命名文件是一个明显的解决方法。然而,惯例是将可执行文件放入项目的bin/ 目录中(cargo 甚至会自动为您找到其中的文件)。

    【讨论】:

      【解决方案2】:

      build.rs 脚本需要不同的名称。将build.rs重命名为builder.rs并更新Cargo.toml

      path = "builder.rs"
      

      您也可以删除 extern crate reqwest 语句,因为它是由 Cargo 推断的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-06-04
        • 1970-01-01
        • 1970-01-01
        • 2023-01-11
        • 2021-03-08
        • 2017-03-09
        • 1970-01-01
        相关资源
        最近更新 更多