cargo 中的语义版本控制系统
Cargo 和其他很多工具一样,遵循语义版本控制系统,程序库以
$$\text{major.minor.patch}$$
格式指定,其中
major
:项目进行重大更新,且包含不向后兼容的功能minor
:仅在以向后兼容的方式添加新功能patch
:仅在以向后兼容的方式修复错误,并且没有添加任何新的功能
在 Cargo.toml
中,当我们指定了完整的版本号,如 1.0.0
,那么 cargo 会帮我们拉取对应版本号的代码;
1 | [dependencies] |
当我们不关心补丁版本号时,如指定 1.0
,那么 cargo 会帮我们拉取 1.0.*
的最高版本号对应的库,当我们只关心主版本号时,如指定版本号为 1
,那么 cargo 会拉取主版本号为 1 对应的最新库。
虽然我们也可以直接指定最新的版本,如下,但是由于版本之间可能不兼容,所以强烈不推荐,并且 Crates.io 不允许上传具有通配符依赖关系的包。
1 | [dependencies] |
我们也可以指定最低的版本号:
1 | [dependencies] |
上面的这种书写方式表示,使用最新的 1.*.*
的版本号,并且版本号至少为 1.1.0
。
以下是一些例子:
1 | ^1.2.3 := >=1.2.3 <2.0.0 |
我们也可以指定更新最小版本,如果指定 major 版本,minor 版本和 patch 程序版本,或仅指定 major 版本和 minor 版本,则仅允许 patch 程序级别更改。如果仅指定 major 版本,则允许进行 minor 和 patch 级别更改。
1 | [dependencies] |
意思是我们可以使用版本 >=1.1.0 && < 2.0.0
的代码库。
一些例子:
1 | ~1.2.3 := >=1.2.3 <1.3.0 |
因为我们也可能直接从 GitHub 等网站上拉取代码库,所以我们可以直接指定
此外,cargo 还有很多其他的工具链可以下载,比如 cargo-edit
提供了 4 条命令:cargo add、cargo rm、cargo edit、cargo upgrade,使用 cargo install cargo-edit
即可下载安装这 4 条命令。
cargo add 时,我们可以直接指定需要的版本号,比如:
1 | cargo add serde@1.0.0 |
更多详细内容可见 指定依赖
生活杂笔,学习杂记,偶尔随便写写东西。
cargo 中的语义版本控制系统