上一篇文章-改进rust代码的35种具体方法-类型(二十)-避免过度优化的诱惑
“如果我们承认SemVer是一个有损的估计,只代表可能变化范围的子集,我们可以开始将其视为一个钝器。”——Titus Winters,“谷歌软件工程(O'Reilly)”
Rust的软件包管理器Cargo允许根据语义版本控制(semver)自动选择Rust代码的依赖项。Cargo.toml节喜欢:
[dependencies]
serde = "1.4"
向cargo
表明这种依赖性可以接受的semver版本范围。官方文档提供了有关指定可接受版本的精确范围的详细信息,但以下是最常用的变体:
"1.2.3"
:指定任何与1.2.3兼容的版本都是可以接受的"^1.2.3"
:是另一种更明确地指定相同事物的方法"=1.2.3"
:针脚到一个特定版本,不接受替代品"~1.2.3"
:允许与1.2.3兼容的版本,但仅在最后指定的组件更改的情况下(因此1.2.4是可以接受的,但1.3.0不是)"1.2.*"
:接受与通配符匹配的任何版本
这些规范允许的示例如下表所示。
技术规格 | 1.2.2 | 1.2.3 | 1.2.4 | 1.3.0 | 2.0.0 |
"1.2.3" | 不 | 是 | 是 | 是 | 不 |
"^1.2.3" | 不 | 是 | 是 | 是 | 不 |
& |