跳转至

cargo 中的版本依赖

cargo 中的版本依赖

原文地址

https://learnku.com/articles/38372

在 Cargo.toml 中有一个 [denpendencies] 节点,指定需要 crate 的名称以及版本,其中有些约定(在 rust 中使用了一个叫 semver 库来处理,原单词:Semantic version,翻译成:语义化版本标准,最全原文:Semantic version parsing and comparison,我这理解为语义化的版本解析和比较)。

crate 中有主要,次要,补丁来组成版本,比如 md5 ="0.6.1", 表示现在的版本在第六个次要版本,第 1 个补丁。

1:不加任何符号指定

这种和使用 "^" 符号一样的作用,具体的看第 3 点

md5 = "0" <==> [0.0.0 -- <1.0.0]

md5 = "0.6" <==> [0.6.0 -- <0.7.0]

md5 = "0.6.1" <==> [0.6.1 -- <0.7.0]

2: *

md5 = "*" // 接受任何新版本

3:^ 符号

插入符,从左往右数,

如果是 0 就往下一个版本号找,一直(总共就三个)找到一个非 0 的然后 + 1,如果一直没找到,就在指定的位置上 + 1(不包含)

^1.2.3 := >=1.2.3 <2.0.0 ^0.2.3 := >=0.2.3 <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

4:~

只接受最小范围的版本

md5 = "~0" <==> [0.0.0---1.0.0 (不包含)]

md5="~0.6" <==> [0.6.0---0.7.0 (不包含)]

md5="~0.6.1" <==> [0.6.0---0.7.0 (不包含)]

第二和第三个是一样的,因为补丁版本已经是最低的

5:> ,<,=

限制大范围版本

md5 = ">0.6.1",// 最低版本 0.6.2

md5 = ">=0.6.1" // 最低版本 0.6.1

md5 = "=0.6.1" // 锁定版本 0.6.1

6:{}

可配置的外部地址,支持 git 仓库,本地路径等

md5 = { git = "http://github/mdt_rs", branch ="master" } // 仓库地址和版本

md5 = {path = "../md5" ,version = "0.1.0", feature=“cust”} //version 可以使用 6 之前的约束,feature 是编译属性

其他

在依赖中有很多不可预发的出现一些问题

1:循环依赖

2:不同 crate 依赖的版本库不同

3:不同平台(操作系统)不同依赖

4:不同环境(开发,测试,生产)不同依赖