我正在尝试向现有项目添加一个箱子
他们都需要一个共同的板条箱(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 来添加新功能
首先,重要的是要知道 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。
还有一些社交解决方案:
0.24
,请要求其他 crate 的维护者选择一个特定版本的ratatui。