You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cargo工作区如何统一配置包依赖与工作区依赖避免重复?

统一Rust工作区依赖配置的方案

我正在试验一种Rust工作区目录结构:项目根目录下包含src和crates文件夹,其中crates存放工作区成员项目,src则是供所有crates/*成员共享的公共库。

为了让crates/*中的成员能复用依赖版本,我使用x = { workspace = true }的方式继承工作区依赖。但引入工作区成员后,必须把可继承的依赖移到[workspace.dependencies]下;而根目录的src对应的库却需要从[dependencies]读取依赖,这导致我必须重复配置相同的依赖项,虽然功能正常但不够优雅。

有没有办法把两者的依赖配置统一到同一个区块下?

原配置代码

# ROOT/Cargo.toml
[workspace]
members = ["crates/kvs-client", "crates/kvs-server"]

[dependencies]
clap = { version = "4.1.6", features = ["derive"] }
dotenv = "0.15.0"
env_logger = "0.10.0"
lazy_static = "1.4.0"
log = "0.4.20"
ron = "0.8.1"
serde = { version = "1.0.188", features = ["derive"] }
serde_json = "1.0.104"
thiserror = "1.0.38"

[workspace.dependencies]
kvs = { path = "." }
clap = { version = "4.1.6", features = ["derive"] }
dotenv = "0.15.0"
env_logger = "0.10.0"
lazy_static = "1.4.0"
log = "0.4.20"
ron = "0.8.1"

解决方案:让根目录库也继承工作区依赖

其实根目录的公共库也可以通过workspace = true的方式继承[workspace.dependencies]中的配置,不需要在[dependencies]下重复声明所有依赖项。

修改后的配置如下:

# ROOT/Cargo.toml
[workspace]
members = ["crates/kvs-client", "crates/kvs-server"]

# 根目录库的依赖全部通过继承工作区配置实现
[dependencies]
clap = { workspace = true }
dotenv = { workspace = true }
env_logger = { workspace = true }
lazy_static = { workspace = true }
log = { workspace = true }
ron = { workspace = true }
serde = { workspace = true, features = ["derive"] }
serde_json = { workspace = true }
thiserror = { workspace = true }

[workspace.dependencies]
kvs = { path = "." }
clap = { version = "4.1.6", features = ["derive"] }
dotenv = "0.15.0"
env_logger = "0.10.0"
lazy_static = "1.4.0"
log = "0.4.20"
ron = "0.8.1"
serde = { version = "1.0.188" }
serde_json = "1.0.104"
thiserror = "1.0.38"

说明

  • 把所有公共依赖的版本、基础配置统一放到[workspace.dependencies]中,只在这里维护一份
  • 根目录的[dependencies]和crates/*中的成员依赖都通过{ workspace = true }继承配置
  • 如果根目录库需要额外的特性(比如serde的derive),可以在[dependencies]的对应项中补充声明,不会覆盖工作区的基础配置

这样就能实现所有依赖配置的统一管理,避免重复编写相同的依赖声明。

内容的提问来源于stack exchange,提问作者dodo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 17:40:56