如何在 Cargo 构建脚本中使用外部包装箱?

How to use external crates in a Cargo build script?

我有这个文件结构

Test
│   .gitignore
│   build.rs
│   Cargo.toml
│
├───.vscode
│       tasks.json
│
├───src
│       main.rs

我有这个Cargo.toml

[package]
name = "test"
version = "0.1.0"
authors = ["xtricman"]
edition = "2018"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
regex = "*"

我有这个build.rs

fn main() {
    let mt = regex::Regex::new(r"_[1-9][0-9]+.rs|_0.rs\z").unwrap().find("gdf_980.rs");
    let mts = if mt.is_some() {
        println!("{}", mt.unwrap().as_str());
    } else {
        println!("None");
    };
}

我想在我的构建脚本中使用 regex crate,但是我遇到了编译错误

error[E0433]: failed to resolve: use of undeclared type or module `regex`
 --> build.rs:2:14
  |
2 |     let mt = regex::Regex::new(r"_[1-9][0-9]+.rs|_0.rs\z").unwrap().find("gdf_980.rs");
  |              ^^^^^ use of undeclared type or module `regex`

Cargo 是否只支持 build.rs 中的 std?

将箱子添加到您的 [build-dependencies] 密钥:

[build-dependencies]
regex = "*"

如果您的 crate 需要,您可以将 crate 添加到 [dependencies] 键。

另请参阅: