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

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

MAJOR.MINOR.PATCH
例如:1.2.3
tokio = { version = "1.0", features = ["full"] }

基本规则解释

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

Cargo 支持的版本范围语法

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

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

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.0 0.x 被视为不稳定
^0.0.5 >=0.0.5, <0.0.6 0.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 = "*"

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

Rust语义化版本介绍的更多相关文章

  1. Semantic Versioning Specification & 语义化版本

    Semantic Versioning Specification & 语义化版本 Semantic Versioning Specification http://semver.org 16 ...

  2. npm学习(八)之如何使用语义化版本

    npm的语义化版本控制——Semantic versioning 在新发布的代码中传达更改的程度非常重要,因为有时更新会破坏包需要的代码(称为依赖项).语义化版本控制(semver)是一个旨在解决这个 ...

  3. 关于语义化版本(semantic versioning or SemVer)

    1  为什么要有SemVer? SemVer用来规范组件之间的依赖版本,它使用一个版本号来传递出组件的API的变化情况. 在理解这规范之后,看一眼依赖包的版本号,就知道API的变化(兼容性)程度,方便 ...

  4. semantic versioning语义化版本号

    语义化版本号 是由github创始人 Tom Preston-Werner 发起的一个关于软件版本号的命名规范,关于这个规范详细的说明可以在 官网 查看,也可访问其 GitHub项目页面 ,官网文档: ...

  5. 语义化版本控制规范(SemVer)

    摘自: http://semver.org/lang/zh-CN/ 简介 在软件管理的领域里存在着被称作"依赖地狱"的死亡之谷,系统规模越大,加入的套件越多,你就越有可能在未来的某 ...

  6. 版本号严格遵守semver语义化标准

    地址:http://semver.org/lang/zh-CN/?spm=a219a.7629140.0.0.GUJMXE 语义化版本 2.0.0 摘要 版本格式:主版本号.次版本号.修订号,版本号递 ...

  7. Semver(语义化版本号)扫盲

    最近Github 10周年在朋友圈里沸沸扬扬刷屏,小编在工作中却惊讶的发现不少同事对版本号中的beta和rc没有概念,使用 npm install package@next 时,也不清楚next代表的 ...

  8. 语义化版本控制规范(SemVer)

    参考链接 https://semver.org/lang/zh-CN/ 语义化版本 2.0.0 (透过版本号的改变来传达信息.) 摘要 版本格式: 主版本号.次版本号.修订号 版本号递增规则如下: 1 ...

  9. 语义化npm版本号

    参考资料: 语义化版本2.0.0 the semantic versioner for npm 在package的devDependencies和dependencies2个字段中有指定依赖包版本,这 ...

  10. HTML 语义化标签-新增标签介绍

    HTML 基础知识 版权声明:未经博主授权,内容严禁转载 ! HTML语义化标签概念 如果没有语义化标签,上面这些 div 都是没有实际意义的,只是我们提供给浏览器的指令. 和 语义化 代码对比: 什 ...

随机推荐

  1. WPF之X名称空间详解

    XAM简介: XAML是一种专门用于绘制UI的语言,借助它就可以把UI定义与运行逻辑分离开来.XAML使用标签来定义UI元素,每个标签对应.NET Framework类库中的一个控件类.通过设置标签的 ...

  2. WebSocket 与 SSE 对比:即时通信的选择(一)

    在现代 Web 开发中,实时通信需求越来越多,比如聊天应用.实时通知.直播弹幕.股票行情推送等.实现这些需求的常见技术有 WebSocket 和 SSE(Server-Sent Events),但它们 ...

  3. 「Note」您想来点数据结构吗?

    大分块系列 最初分块 \(\color{black}{P4119}\) 考虑数列分块+值域分块 数列分块需要维护: \(nid_{i,j}\) \(fid_i\) \(f_i\) 块 \(i\) 中数 ...

  4. Astah Community安装教程及使用说明(包括括菜单命令解释、操作向导说明、快捷命令说明)

    一.安装教程: 1.双击下载好的文件,允许安装(现在官网已经停刊免费的社区版了,如果想要下载社区版需要从其他地方寻找资源) 2.选择安装的语言,English,点击OK 3.next,接受协议,nex ...

  5. kubernetes集群之GC处理

    一.简单说明 GC(Garbage Collector)即垃圾收集清理,kubernetes集群中,kubelet的GC功能将会清理未使用的image和container.其中kubelet对cont ...

  6. 爆肝整理!0 基础 AI 编程必拿的 3 大神器:源码一键跑 + 推广秘籍 + 私教答疑

    2025年预期的 AI 应用爆发并没有到来,但是编程领域却是个特例.AI 编程工具正在引领大模型落地的浪潮,展现出明显的产品市场契合度(Product Market Fit,PMF). 那么在全面智能 ...

  7. ABAP基础一:ALV样例

    REPORT zly_report. *********Report Demo**************************************** *本程序主要将普通的ALV报表做拆分讲解 ...

  8. DRF之频率组件源码分析

    DRF之频率组件源码分析 [一]频率组件介绍 Django Rest Framework(DRF)中的频率组件是用于限制API端点的访问频率的一种机制. 频率组件可以帮助你控制用户对API的请求频率, ...

  9. FFmpeg开发笔记(六十九)Windows给FFmpeg集成AV1编码器libaom

    ​AV1是一种新兴的免费视频编码标准,它由开放媒体联盟(Alliance for Open Media,简称AOM)于2018年制定,融合了Google VP10.Mozilla Daala以及Cis ...

  10. 使用 Firefox (火狐)浏览器 必开的配置

    首先,在网址输入框中输入 about:config 进入浏览器配置页面 设置打开书签的时候在新标签页打开 然后搜索 browser.tabs.loadBookmarksInTabs 并将它的值改为tr ...