Rust语义化版本介绍

Rust语义化版本及范围语法介绍

官方文档:https://semver.org/

在 Rust 中,Cargo.toml 中使用的版本号遵循 语义化版本(Semantic Versioning, SemVer),格式如下:

/* by 01022.hk - online tools website : 01022.hk/zh/browserinfo.html */
MAJOR.MINOR.PATCH
例如:1.2.3
tokio = { version = "1.0", features = ["full"] }

基本规则解释

部分含义
MAJOR主版本号:当你做了不兼容的 API 修改时,递增
MINOR次版本号:当你做了向下兼容的功能性新增,递增
PATCH补丁号:当你做了向下兼容的问题修正,一般是bug修改,递增。

Cargo 支持的版本范围语法

Rust 的 Cargo.toml 使用语义化版本规则的前缀语法来指定依赖的版本范围:

1. ^ —— 默认行为(Caret requirement)

/* by 01022.hk - online tools website : 01022.hk/zh/browserinfo.html */
serde = "1.0.219"      # 等价于 ^1.0.219

含义:允许更新到不改变“最左侧非零数字”的任意新版本

写法实际含义范围说明
^1.2.3>=1.2.3, <2.0.0不会破坏 API 的更新
^0.3.1>=0.3.1, <0.4.00.x 被视为不稳定
^0.0.5>=0.0.5, <0.0.60.0.x 变化都可能破坏兼容性

👉 ^ 是 Cargo 的默认行为,用于保持向后兼容的同时接收非破坏性升级。

实例说明:

serde = "1.0"     # 等价于 ^1.0.0   → 允许 1.x.x(不包括 2.0)
serde = "0.3"     # 等价于 ^0.3.0   → 允许 0.3.x(不包括 0.4)
serde = "0.0.5"   # 等价于 ^0.0.5   → 只允许 0.0.5
特别注意:0.x 是不稳定的

0.x.y 版本被视为“未稳定”,因此:

  • ^0.1.2 只允许 0.1.z不允许升级到 0.2.0
  • ^0.0.5 只允许 0.0.5,等价于锁定

2. ~ —— Patch 限定(Tilde requirement)

serde = "~1.2.3"

含义:锁定 minor 版本,只允许 patch 升级

等价于:

>=1.2.3, <1.3.0

3. = ——精确版本

serde = "=1.2.3"

只允许使用 恰好 1.2.3 这个版本。即使最新版本是1.2.5,cargo update 命令也不会更新到最新版本。

4. 范围表达

serde = ">=1.0.0, <1.5.0"

直接通过数学符号表达版本范围。

5. 星号 *

serde = "*"

允许任何版本,默认拉取最新版本(不建议用于生产环境)。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值