如何拥有相同间接依赖项的多个不兼容版本?

art*_*tin 6 rust rust-cargo

我正在尝试在同一个项目中使用actix-webreqwest打包,但它们依赖于不同版本的tokio.

显然,Cargo 无法选择tokio满足所有直接依赖项的版本,但我什至没有在同一上下文中使用这些依赖项:

  • actix-web 用于服务器 REST API 实现
  • reqwest 仅用于系统测试

货物.toml:

[package]
name = "test-cargo"
version = "0.1.0"
edition = "2018"

[dependencies]
actix-rt = "1.0.0"
actix-web = "2.0.0-alpha.6"

[dev-dependencies]
reqwest = "0.10.0-alpha.2"
Run Code Online (Sandbox Code Playgroud)

的输出cargo build

[package]
name = "test-cargo"
version = "0.1.0"
edition = "2018"

[dependencies]
actix-rt = "1.0.0"
actix-web = "2.0.0-alpha.6"

[dev-dependencies]
reqwest = "0.10.0-alpha.2"
Run Code Online (Sandbox Code Playgroud)

我已经想到了一些解决方法,但它们都是不可接受的:

  • 降级直接依赖项之一,以便tokio版本匹配 - 那么我的依赖项不是我想要的版本。
  • reqwest用一个不依赖的类似板条箱替换tokio- 那么我的依赖项不是我想要的板条箱。
  • 将测试reqwest移至单独的包