rust 对工作区使用未声明的板条箱或模块

nue99wik  于 2022-12-04  发布在  其他
关注(0)|答案(2)|浏览(262)

我有以下结构:

-- project/
|
|-- Cargo.toml
|-- Cargo.lock
|-- src/ 
  |
  |-- main.rs
|-- crate1/
  |-- lib.rs
  |-- Cargo.toml
|-- tests
  |-- Cargo.toml
  |-- test.rs

这是货物的内容。
第一次
这里我使用了另一个库来测试,我不认为问题出在这里,因为我已经用这种方法做了几次测试,它运行得很好,但是由于某种原因,现在这种情况发生在我身上,我不知道是否一切都是我自己的打字错误,但是我已经检查了很多次了

# tests/Cargo.tom
[package]
name = "tests"
version = "0.1.0"
edition = "2021"
publish = false

[dev-dependencies]
crate1 = { path = "../crate1" }

[[test]]
name = "crate1_test"
path = "crate1_test.rs"

[[test]]
name = "other_crate1_test"
path = "other_crate1_test.rs"

这是其中一个测试的样子

// tests/crate1_test.rs
use crate1::random_func;

[test]
fn random_func_test() {
    assert!(random_func());
}

由于某种原因,货物无法识别“crate1”板条箱,每次导入板条箱时都会出现此错误:

error[E0433]: failed to resolve: use of undeclared crate or module `crate1`
 --> tests/crate1_test.rs:1:5
  |
1 | use crate1::random_func;
  |     ^^^^^^ use of undeclared crate or module `crate1`

For more information about this error, try `rustc --explain E0433`.
error: could not compile `project-manager` due to previous error
wkftcu5l

wkftcu5l1#

我发现了问题,那就是我没有把crate1作为主项目的依赖项,这是我的根Cargo.toml现在的样子:

[package]
name = "project"
version = "0.1.0"
edition = "2021"

[workspace]
members = [
  "crate1",

  "tests"
]

[dependencies]
crate1 = { path = "crate1" }
reqwest = "0.11.13"
tokio = { version = "1", features = ["full"] }

现在我可以正确地构建测试了

c2e8gylq

c2e8gylq2#

在src/ www.example.com中main.rs您必须添加mod crate1;,并且可能添加mod tests;

相关问题