是一样的吗
[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.y
与0.x.z
兼容,其中y ≥ z
和x > 0
.
另一方面,波浪需求似乎是由Cargo定义的:
波浪需求指定了具有一定更新能力的最小版本。如果指定了主要、次要和补丁版本,或者只指定了主要和次要版本,则只允许进行补丁级别的更改。如果你只指定一个主要版本,那么小的和补丁级别的更改是允许的。