我是 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 编译器和环境构建较旧的依赖项?
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-router 将占用 2.0 及以下版本的任何
bytestring
,但不包括 2.0,并且由于 actix 不认为 MSRV 更改是破坏,旧版本的 actix 将使用更新且与 rustc 不兼容的版本字节串。您需要找到与您的 MRSV 兼容的字节串的最新版本,并将其作为您的依赖项(根据变更日志 1.2.0 将 MSRV 提升到 1.57,但这可能是也可能不是真的,因为它没有指定任何 MSRV 提升在 1.3 中,即使你清楚地找到了一个)。