如何让一个包使用与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
我有一个项目 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