Rust 版本的依赖项

问题描述 投票:0回答:1

我是 Rust 新手。

我尝试使用依赖项构建一个示例项目

actix-web = "3.3.2"

我必须使用 Rust 1.59.0,因为较旧的 Yocto Linux 版本管理构建,它只有该版本的 Rust。

构建失败:

package `bytestring v1.3.1` cannot be built because it requires rustc 1.65 or newer, while the currently active rustc version is 1.59.0

Rust 1.59.0 于 2022 年发布。Actix-web 3.3.2 于 2020 年发布。 怎么可能无法使用较新的 Rust 编译器和环境构建较旧的依赖项?

如何将 Actix-web 与 Rust 1.59.0 一起使用?

我使用了这个Cargo.toml:

[package]
name = "rest-api-rust"
version = "0.1.0"
edition = "2018"
publish = false

[dependencies]
actix-web = "3.3.2"
rust rust-cargo actix-web rust-actix
1个回答
0
投票

怎么可能无法使用较新的 Rust 编译器和环境构建较旧的依赖项?

https://github.com/actix/actix-net?tab=readme-ov-file#msrv

此存储库中的板条箱当前支持的最低 Rust 版本 (MSRV) 为 1.65。作为一项政策,我们允许在非破坏性版本中增加 MSRV。

依赖链是:

❯ cargo tree -i bytestring
bytestring v1.3.1
└── actix-router v0.2.7
    └── actix-web v3.3.3

具体版本规格为:

  • actix-web 3.3.2 -> actix-路由器 ^0.2.4
  • actix-router 0.2.7 -> 字节串 >=0.1.5,<2

如您所见,actix-router 将占用 2.0 及以下版本的任何

bytestring
,但不包括 2.0,并且由于 actix 不认为 MSRV 更改是破坏,旧版本的 actix 将使用更新且与 rustc 不兼容的版本字节串。您需要找到与您的 MRSV 兼容的字节串的最新版本,并将其作为您的依赖项(根据变更日志 1.2.0 将 MSRV 提升到 1.57,但这可能是也可能不是真的,因为它没有指定任何 MSRV 提升在 1.3 中,即使你清楚地找到了一个)。

© www.soinside.com 2019 - 2024. All rights reserved.