Cargo 中未指定的确切版本 pin 的语义是什么?

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

考虑

[dependencies]
文件的
Cargo.toml
部分中的条目,如下所示:

[dependencies]
thingy = "=1.2"

所以,这是一个比较要求,对于 SemVer 来说这是一个“等于”要求,但它在某种程度上“未指定”,因为它缺少补丁版本,所以它不完全正确 指定任何事情,尽管看起来确实如此。

到目前为止,根据我在文档中读到的内容,还没有明确的解释。假设,我可以看到它等同于以下任何一个:

thingy = "1.2.*"

thingy = "~1.2"

或者甚至

thingy = "=1.2.0"

在实践中,它看起来像

thingy = "~1.2"
一样工作,因为在我看到这样写的代码库的情况下,
Cargo.lock
文件显示该项目正在使用
1.2.1

Cargo.toml
中未指定的相等比较要求是否具有明确定义的语义?如果是,它们是什么以及它们记录在哪里?

我希望这里的目的是编写波浪号要求,并且我计划用波浪号要求替换这个不明确的条目,除非我忽略了一些微妙的(未记录的?)差异,这些差异赋予了此语法真正的含义。

rust rust-cargo semantic-versioning
1个回答
0
投票

虽然参考页面中似乎没有正确记录,但我们可以查看 semver 箱实现,特别是

Op::Exact
运算符。它指出:

  • =I.J.K
     — 正是版本
    I.J.K
  • =I.J
     — 相当于
    >=I.J.0, <I.(J+1).0
  • =I
     — 相当于
    >=I.0.0, <(I+1).0.0
© www.soinside.com 2019 - 2024. All rights reserved.