前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Rust workspace Dependencies继承

Rust workspace Dependencies继承

原创
作者头像
路之遥
发布于 2025-04-10 03:01:19
发布于 2025-04-10 03:01:19
1170
举报
文章被收录于专栏:luzhiyaoluzhiyao

警告信息:

crates/sub/Cargo.toml: default-features is ignored for primitives, since default-features was not specified for workspace.dependencies.primitives, this could become a hard error in the future

警告 Cargo 工作区依赖管理规则 与 成员package指定的依赖特性有覆盖冲突,未来的版本可能会由警告变为error。crates/sub package的primitives 依赖的default-features特性设置被工作区的primitives crate 设置覆盖、未生效。

原因

rust 中虽然可使用workspace使项目内 成员package继承workspace.dependencies中对于指定依赖的配置(如: 依赖的version,feature..),但继承dependencies配置时有1个需要注意的地方。

当在成员package中设置某个crate的workspace为true时,继承的特性存在覆盖和附加2种方式。

特性附加

如在workspace中配置tokio-stream 依赖如下

代码语言:yaml
AI代码解释
复制
[workspace.dependencies]
tokio-stream = { version = "0.1.17", features = ["default", "sync"] }

成员package 中配置tokio-stream依赖为

代码语言:yaml
AI代码解释
复制
[dependencies]
tokio-stream = { workspace=true, features = ["other"] }

成员package中 tokio-stream的最终设定为:

  1. 继承workspace中设置的 tokio-stream依赖的版本,
  2. 继承workspace中设置的 features同时再附加成员package内配置的"other",即此时成员package内 tokio-stream的features有3个["default", "sync", "other"]

.

特性覆盖

当在workspace中配置 tokio-stream = {version="0.1", default-features = false},default-features特性采用的覆盖规则,会覆盖成员 package中的default-features 特性(如tokio-stream = {workspace, default-features = true}),这个配置中的default-features会被workspace设置覆盖不会生效。

参考

https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#inheriting-a-dependency-from-a-workspace

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 警告信息:
  • 原因
    • 特性附加
    • 特性覆盖
  • 参考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档