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

Rust依赖冲突咨询:actix-web与sled的zstd-sys版本冲突如何解决?

解决zstd-sys版本冲突导致的Cargo链接错误

问题背景

项目引入actix-web和sled两个依赖,actix-web依赖zstd-sys v2.0.4,sled启用compression特性后依赖zstd-sys 1.6.1。尝试让两个依赖分别链接对应版本的zstd时,运行cargo run出现以下错误:

Only one package in the dependency graph may specify the same links value. This helps ensure that only one copy of a native library is linked in the final binary. Try to adjust your dependencies so that only one package uses the links ='zstd-sys' value.

项目的Cargo.toml配置如下:

[dependencies]
actix = "0.13.0"
actix-web = { version = "4", features = ["rustls"] }
actix-web-actors = "4.1.0"
awc = { version = "3", features = ["rustls"] }
tokio = { version = "1.23.1", features = ["sync"] }
url = { version = "2.2", features = ["serde"] }
env_logger = "0.10.0"
sled = { version = "0.34.7", features = ["compression"], links = "zstd-sys=1.6.1"}
bincode = "1.3.3"
serde = {version = "1.0", features = ["derive"]}
futures-util = "0.3.25"
actix-codec = "0.5.0"
rustls = "0.20.8"
concurrent-map = "5.0.6"
lazy_static = "1.4.0"

[dependencies.xxhash-rust]
version = "0.8.5"
features = ["xxh3", "const_xxh3"]

解决方案

Cargo的links机制核心是保证同一原生库仅被链接一次,因此无法实现两个不同版本zstd-sys同时链接的需求。可尝试以下几种方法解决冲突:

1. 统一zstd-sys版本

找到能同时兼容actix-web和sled的zstd-sys版本,通过强制依赖来统一:
在Cargo.toml中添加指定版本的zstd-sys依赖:

[dependencies]
# ... 保留原有依赖
zstd-sys = "1.6.1" # 或尝试2.0.4,验证哪个版本能同时适配两个主依赖

执行cargo update让所有依赖统一使用该版本,随后检查编译是否正常。

2. 禁用其中一个依赖的zstd特性

如果不需要sled的压缩功能,可直接关闭其compression特性:

sled = { version = "0.34.7", features = [] }

此举会让sled不再依赖zstd-sys,直接消除版本冲突。

3. 替换依赖或使用替代方案

  • 检查actix-web是否存在不依赖zstd-sys的版本,或更换其他web框架;
  • 替换sled为不依赖zstd的数据库实现。

4. 使用Cargo patch功能(进阶,不推荐日常使用)

若必须保留两个版本,可尝试修改其中一个zstd-sys的links字段:

  1. 将目标版本的zstd-sys源码复制到本地路径;
  2. 修改其Cargo.toml中的links字段为唯一值(如zstd-sys-v1);
  3. 在项目Cargo.toml中添加patch配置:
[patch.crates-io]
zstd-sys = { path = "./path/to/patched-zstd-sys" }

该方法需自行维护patched版本,可能引发未定义行为,仅作为最后尝试手段。

内容的提问来源于stack exchange,提问作者blurt.washday

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 07:45:36