货物版本依赖选择算法?



是一样的吗

[dependencies]
for_each = "0.1"

[dependencies]
for_each = "0.1.2"

[dependencies]
for_each = "~0.1"

从描述来看,它看起来是一样的,但从实验来看,我得到了不一致的结果。

需要依赖的这3种变体之间的细微差别是什么?


范围如下:

0.1    :=  >=0.1.0, <0.2.0
0.1.2  :=  >=0.1.2, <0.2.0
~0.1   := >=0.1.0, <0.2.0

对吧?

从这些,很明显0.1~0.1具有相同的范围。但是我遇到了0.1~0.1给出的结果非常不同的情况。有些细微的差别超出了范围,我不明白那是什么。

0.1    :=  >=0.1.0, <0.2.0
0.1.2  :=  >=0.1.2, <0.2.0
~0.1   :=  >=0.1.0, <0.2.0

更多细节见https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html。


如果没有波浪,则按照SemVer规则确定版本兼容性。<1.0.0版本的货物扩展SemVer:

Cargo认为0.x.y0.x.z兼容,其中y ≥ zx > 0.

另一方面,波浪需求似乎是由Cargo定义的:

波浪需求指定了具有一定更新能力的最小版本。如果指定了主要、次要和补丁版本,或者只指定了主要和次要版本,则只允许进行补丁级别的更改。如果你只指定一个主要版本,那么小的和补丁级别的更改是允许的。

最新更新