我拥有一个 Rust 库,每天都在 github 管道中运行测试。这些测试包括 MSRV 版本(当前为 1.69.0)。当 Cargo 决定将某些包解析为与指定的 Rust 版本不兼容的版本时,这些 MSRV 测试有时会失败。
这是连续两天的最新示例(其间没有代码更改):
tokio v1.38.1
。使用 1.69.0 构建良好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,但正在采取措施支持这一点。