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

为async-graphql添加tracing特性触发Cargo版本冲突错误

依赖版本冲突原因解析

你给async-graphql添加tracing特性的配置如下:

async-graphql = { version = "6.0.11", default-features = false, features = [
  "tracing",
] }

遇到的编译错误:

error: failed to select a version for `futures-executor`.
    ... required by package `futures v0.3.29`
    ... which satisfies dependency `futures = "^0.3.28"` (locked to 0.3.29) of package `cmd v0.1.0 (C:\prj\src\cmd)`
versions that meet the requirements `^0.3.29` are: 0.3.29

all possible versions conflict with previously selected packages.

  previously selected package `futures-executor v0.3.28`
    ... which satisfies dependency `futures-executor = "^0.3"` (locked to 0.3.28) of package `opentelemetry_sdk v0.21.1`
    ... which satisfies dependency `opentelemetry_sdk = "^0.21"` (locked to 0.21.1) of package `worker v0.1.0 (C:\prj\src\worker)`
    ... which satisfies path dependency `worker` (locked to 0.1.0) of package `cmd v0.1.0 (C:\prj\src\cmd)`

failed to select a version for `futures-executor` which could resolve this conflict

错误原因

这是典型的Cargo依赖版本冲突问题:

  • 添加tracing特性后,async-graphql及其依赖链要求futures库升级到v0.3.29,而futures v0.3.29对futures-executor的版本要求是^0.3.29(即最低0.3.29版本)。
  • 你的项目中opentelemetry_sdk v0.21.1已经在Cargo.lock中锁定了futures-executor v0.3.28,且该包通过worker路径依赖被cmd包引用。
  • 虽然opentelemetry_sdk对futures-executor的声明依赖是^0.3(理论上兼容0.3.x全系列),但Cargo.lock一旦生成,默认会保留已锁定的版本,不会自动升级来满足新的依赖要求,导致两个版本要求无法调和。

即便你更新了所有依赖,opentelemetry_sdk v0.21.1本身是较旧的版本,它的依赖约束在配合已锁定的版本时,和新引入的futures v0.3.29的要求产生了冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 13:06:06