我拿到了这份Cargo 档案:

[package]
edition.workspace = true
name = "batch_jobs"
version.workspace = true

[[bin]]
name = "batch_jobs"
path = "src/main.rs"

[lib]
name = "batch_jobs_lib"
path = "src/lib.rs"

在另一个 crate 中,我想在batch_jobs_lib上添加一个依赖项.我不能这样做.货运公司抱怨说,它找不到 crate .当我更改[[bin]]部分的命名时,我让它正常工作,但我只是想知道这段代码有什么问题.

在同一个工作区的另一个crate中,我试着像这样声明依赖项:

batch_jobs_lib = { path = "../batch_jobs" }

我得到这个错误:error: no matching package named batch_jobs_lib found

在使用此代码时,我无法访问lib的代码:

batch_jobs = { path = "../batch_jobs" }

更糟糕的是,Rust甚至找不到任何包,但乐于添加依赖项.

是我遗漏了什么,还是我错误地配置了我的TOML文件,这是不允许的/可能的?

推荐答案

TOML表[dependencies]中的密钥指的是package个名字,而不是 crate ,在源代码中正好相反.将库箱命名为不同于包的名称非常不正统,但仍有可能,这意味着您必须在源代码中引用与Cargo.toml中不同的库:

[dependencies]
batch_jobs = { path = "../batch_jobs" }

而在机箱的源代码中,

use batch_jobs_lib::*;

最好是只依赖默认值而忽略batch_jobs/Cargo.toml中的[lib]部分

Rust相关问答推荐

为什么幻影数据不能自动推断?

如何最好地并行化修改同一Rust向量的多个切片的代码?

如何装箱生命周期相关联的两个对象?

在Rust中有没有办法在没有UB的情况下在指针和U64之间进行转换?

有没有办法指定只在Rust的测试中有效的断言?

在生存期内将非静态可变引用转换为范围内的静态可变引用

如何将实现多个特征的 struct 传递给接受这些特征为&;mut?

为什么 `Deref` 没有在 `Cell` 上实现?

如何将带有嵌套borrow /NLL 的 Rust 代码提取到函数中

RUST 中的读写器锁定模式

如何获取模块树?

部署Rust发布二进制文件的先决条件

有什么办法可以追踪泛型的单态化过程吗?

在 Rust 中返回对枚举变体的引用是个好主意吗?

提取 struct 生成宏中字段出现的索引

HashMap entry() 方法使borrow 的时间比预期的长

如何在 Rust 的内置函数上实现特征?

在 Rust 中组合特征的不同方法是否等效?

基于名称是否存在的条件编译

当值是新类型包装器时,对键的奇怪 HashMap 生命周期要求