[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
具有明确定义的语义?如果是,它们是什么?在哪里记录?
我希望这里的意图是写一个波浪号要求,并且我计划用波浪号要求替换这个不清楚的条目,除非我忽略了一些细微的(未记录的?)差异,从而赋予这种语法真正的含义。
虽然在参考页面中似乎没有正确记录,但我们可以查看semver crate(当前
cargo
实现所依赖的)的实现,特别是Op::Exact
运算符的实现。它指出:更新:正如所说,由于
Cargo
没有记录这种行为,所以不应该依赖它,最好使用格式良好、记录良好的版本要求。