8

cargo 中的语义版本控制系统

 3 years ago
source link: https://junhaideng.github.io/2022/01/04/rust/cargo/version/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
8 个月前发表Rust / Note4 分钟读完 (大约588个字)7 次访问

cargo 中的语义版本控制系统

Cargo 和其他很多工具一样,遵循语义版本控制系统,程序库以

major.minor.patchmajor.minor.patch

格式指定,其中

  • major:项目进行重大更新,且包含不向后兼容的功能
  • minor:仅在以向后兼容的方式添加新功能
  • patch:仅在以向后兼容的方式修复错误,并且没有添加任何新的功能

Cargo.toml 中,当我们指定了完整的版本号,如 1.0.0,那么 cargo 会帮我们拉取对应版本号的代码;

[dependencies]
serde = "1.0.0"
# 或者
# serde = { version = "1.0.0" }

当我们不关心补丁版本号时,如指定 1.0,那么 cargo 会帮我们拉取 1.0.* 的最高版本号对应的库,当我们只关心主版本号时,如指定版本号为 1,那么 cargo 会拉取主版本号为 1 对应的最新库。

虽然我们也可以直接指定最新的版本,如下,但是由于版本之间可能不兼容,所以强烈不推荐,并且 Crates.io 不允许上传具有通配符依赖关系的包。

[dependencies]
serde = "*"

我们也可以指定最低的版本号:

[dependencies]
serde = "^1.1.0"

上面的这种书写方式表示,使用最新的 1.*.* 的版本号,并且版本号至少为 1.1.0

以下是一些例子:

^1.2.3 := >=1.2.3 <2.0.0
^1.2 := >=1.2.0 <2.0.0
^1 := >=1.0.0 <2.0.0
^0.2.3 := >=0.2.3 <0.3.0
^0.2 := >= 0.2.0 < 0.3.0
^0.0.3 := >=0.0.3 <0.0.4
^0.0 := >=0.0.0 <0.1.0
^0 := >=0.0.0 <1.0.0

我们也可以指定更新最小版本,如果指定 major 版本,minor 版本和 patch 程序版本,或仅指定 major 版本和 minor 版本,则仅允许 patch 程序级别更改。如果仅指定 major 版本,则允许进行 minor 和 patch 级别更改。

[dependencies]
serde = "~1.1.0"

意思是我们可以使用版本 >=1.1.0 && < 2.0.0 的代码库。

一些例子:

~1.2.3 := >=1.2.3 <1.3.0
~1.2 := >=1.2.0 <1.3.0
~1 := >=1.0.0 <2.0.0

因为我们也可能直接从 GitHub 等网站上拉取代码库,所以我们可以直接指定

此外,cargo 还有很多其他的工具链可以下载,比如 cargo-edit 提供了 4 条命令:cargo add、cargo rm、cargo edit、cargo upgrade,使用 cargo install cargo-edit 即可下载安装这 4 条命令。

cargo add 时,我们可以直接指定需要的版本号,比如:

cargo add [email protected]

更多详细内容可见 指定依赖


生活杂笔,学习杂记,偶尔随便写写东西。

</article


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK