尝试让产品就板条箱版本达成一致

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

我正在尝试向现有项目添加一个箱子

他们都需要一个共同的板条箱(ratatui)

最初我想添加的箱子说

ratatui = { version = "0.21", default-features = false, features = ['crossterm', 'serde']}

我想添加的箱子说

ratatui = { version = ">=0.23.0, <1", default-features = false, optional = true }

所以我把原来的说法改为

ratatui = { version = "0.23", default-features = false, features = ['crossterm', 'serde']}

并构建

我的期望是我们最终都会使用 0.23

实际发生的情况是,原始版本使用 0.23,但添加的板条箱使用 0.24。这不起作用,因为两者不兼容(它们来回传递ratatui类型的参数)

我不拥有主项目,我只是整理一个 PR 来添加新功能

rust rust-cargo
1个回答
0
投票

首先,重要的是要知道 Cargo 使用第一个非零版本号作为主要版本。因此

0.23.0
0.24.0
被认为是不兼容的,而
1.23.0
1.24.0
是兼容的。

如果您的目标只是启用这些功能,那么您可以使用相同的版本说明符。

ratatui = { version = ">=0.23.0, <1", default-features = false, features = ['crossterm', 'serde']}

如果您的目标是将ratatui限制为

0.23
,因为您需要该特定版本的功能,那么您应该能够使用
cargo update
将它们都恢复为
0.23
。但是,这仅适用于当前的锁定文件,因此如果有人依赖您的板条箱或以其他方式生成新的锁定文件,它将再次破坏。

您还可以修补其他板条箱以使用不同版本的ratatui。

还有一些社交解决方案:

  • 如果其他 crate 出现故障
    0.24
    ,请要求其他 crate 的维护者选择一个特定版本的ratatui。
  • 如果您需要的只是启用的功能,请要求维护者为ratatui的功能提供功能。
  • 如果您需要使用ratatui中的某些东西,请要求维护者重新导出ratatui。
© www.soinside.com 2019 - 2024. All rights reserved.