如何让一个包使用与B相同版本的依赖?

How to let a package use the same version of dependencies as B?

我有一个项目 A 和 B,如下所示,B 依赖于 A。A 是一个 git 子模块。

repo
|- contrib
|--- A
|----- components
|------- package A
|------- package B
|----- Cargo.toml
|- B
|--- Cargo.toml

A 有如下依赖关系

// A/Cargo.toml
serde = "1.0"
serde_derive = "1.0"
serde_ignored = "0.1"
serde_json = "1.0"
tempfile = "3.0"
lazy_static = "1.3"

我希望B和A有相同的依赖版本,如下

// B/Cargo.toml

compA = { path = "../A/components/compA" }
compB = { path = "../A/components/compB" }

serde = "1.0"
serde_derive = "1.0"
serde_ignored = "0.1"
serde_json = "1.0"
tempfile = "3.0"
lazy_static = "1.3"

但是,一旦 A 更新,它可能会更新其依赖项。所以A后面可能会用到serde = "2.0"。那么 B 如何“自动”将其 serde 更新为 2.0?

我想我需要这样的东西:“B 取决于 A 所依赖的 serde”。

I think I need something that says "B depends the serde which A is depending".

A 应该 expose/re-export 相关的板条箱(或其部分),例如:

pub use serde; // etc

然后 B 应该使用这些导出而不是在其 Cargo.toml 中声明每个依赖项:

use A::serde; // etc