cargo 中的版本依赖
cargo 中的版本依赖¶
原文地址¶
在 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:不同环境(开发,测试,生产)不同依赖