Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Rust Cargo中,插入符号版本约束意味着什么?_Rust_Rust Cargo - Fatal编程技术网

在Rust Cargo中,插入符号版本约束意味着什么?

在Rust Cargo中,插入符号版本约束意味着什么?,rust,rust-cargo,Rust,Rust Cargo,我正在实现Rust Cargo版本要求。一般来说,我很难理解指定的插入符号要求。我发现了,但这个问题是关于npm版本要求的,我不确定它是否与Rust Cargo版本要求相同 最后,我读到: 插入符号要求允许对指定版本进行SemVer兼容的更新。如果新版本号未修改主、辅补丁分组中最左边的非零数字,则允许进行更新。在这种情况下,如果我们运行cargo update-p time,如果是最新的0.1.z版本,cargo应该将我们更新到0.1.13,但不会将我们更新到0.2.0。如果我们将版本字符串指定

我正在实现Rust Cargo版本要求。一般来说,我很难理解指定的插入符号要求。我发现了,但这个问题是关于npm版本要求的,我不确定它是否与Rust Cargo版本要求相同

最后,我读到:

插入符号要求允许对指定版本进行SemVer兼容的更新。如果新版本号未修改主、辅补丁分组中最左边的非零数字,则允许进行更新。在这种情况下,如果我们运行
cargo update-p time
,如果是最新的
0.1.z
版本,cargo应该将我们更新到
0.1.13
,但不会将我们更新到
0.2.0
。如果我们将版本字符串指定为
^1.0
,则cargo应更新为
1.1
,如果它是最新的
1.y
版本,而不是
2.0
。版本
0.0.x
被视为与任何其他版本不兼容

以下是插入符号要求的更多示例以及允许的版本:

因此,除了我对第六个示例(
^0.0.3
)的理解之外,我的结论是插入符号版本要求与通配符版本要求完全相同,除非指定了补丁,其中通配符版本要求与
={version}
(等于或更高版本)比较版本要求一致


这种理解正确吗?为什么示例6是这样?

与npm不同,默认版本要求范围实际上是插入符号要求!这一点已在问题中链接的部分之前的中说明

字符串
“0.1.12”
是semver版本要求。由于此字符串中没有任何运算符,因此它的解释方式与我们指定的“
”^0.1.12“
”相同,这称为插入符号要求

因此,以下两个依赖项规范是等效的

time = "0.1.12"
顺便说一下,这是本文件其余部分中提到的要求。
time
的更新可能会带来高于0.1.12的版本,但决不会带来0.2.0或更高的版本

另见:


Ah,偏离路线-这解决了缺少的版本要求。例6呢?这将是插入符号要求的另一个边缘情况。您引用的文本中明确指出:“版本
0.0.x
不被视为与任何其他版本兼容。”
^1.2.3  :=  >=1.2.3, <2.0.0 // same as >=1.2.3 AND 1.*
^1.2    :=  >=1.2.0, <2.0.0 // same as >=1.2 AND 1.*, which condenses into 1.2.*
^1      :=  >=1.0.0, <2.0.0 // same as 1.*
^0.2.3  :=  >=0.2.3, <0.3.0 // same as >=0.2.3 AND 0.2.*
^0.2    :=  >=0.2.0, <0.3.0 // same as 0.2.*, which condenses into 0.2.*
^0.0.3  :=  >=0.0.3, <0.0.4 // huh
^0.0    :=  >=0.0.0, <0.1.0 // same as >=0.0.0 AND 0.0.*
^0      :=  >=0.0.0, <1.0.0 // same as >=0.0.0 AND 0.*, which condenses into 0.*
time = "0.1.12"
time = "^0.1.12"