我拥有一个 Rust 库,每天都会在 github 管道中运行测试。这些测试包括 MSRV 构建(当前为 1.69.0)。当 Cargo 决定将某些包解析为与指定 rust 版本不兼容的版本时,这些 MSRV 测试有时会失败。
以下是连续两天的最新示例(中间没有代码变化):
- 第 X 天(构建日志):。
tokio v1.38.1
使用 1.69.0 构建良好 - 第 X+1 天(构建日志):。尽管指定正确,
tokio v1.39.1
但仍无法构建(在此处发布之前在此处遇到)tokio
rust-version = 1.70.0
再次,tokio v1.39.1
表示它需要rust-version = 1.70.0
。我自己Cargo.toml
指定了一个非常宽松的版本:
#...
[dev-dependencies]
tokio = { version = "1", features = ["full"] }
#...
因为它是一个开发依赖项,我不想定期处理它,所以只需在所有地方使用最新的兼容版本。
目前我已经将其固定tokio
得更严格,但过去的处理中也发生过同样的问题dependencies
,这是一个更大的问题,我未能妥善处理(由于 dep 解析失败而仅仅提升了 MSRV)。
这是一个库,所以Cargo.lock
我不能利用(ref)来处理这个问题。我遗漏了什么?为什么解析器会忽略其约束cargo
而带来软件包版本?rust-version
货物依赖解析器不支持 MSRV,但正在采取措施来支持这一点。